仅在一个点分割字符串

问题描述 投票:0回答:4

我的脚本需要从破折号/连字符中分割一个字符串。并将每一块分配给一个变量。

示例:

Blue Oyster Cult - Don't Fear The Reaper
Jimi Hendrix - Come On (Let The Good Times Roll)
Molly Hatchet - Dreams I'll Never See

我认为正则表达式可以用

[\-]+
做到这一点,但我正在寻找一种不会产生超过两个变量的方法。 因此,无论使用什么字符串,结果都必须只有两部分。我认为最好的方法是仅考虑字符串中的第一个
-
(连字符)。

知道如何实现这一目标吗?

提前致谢。

javascript jquery regex split
4个回答
6
投票

简单地做

.split(/-(.+)/)

当按

-(.+)
拆分时,匹配组
(.+)
将为您提供完整的所需第二部分,因为
.+
消耗第一个
-
之后的所有字符直到行尾:

var text = "Hello world - This is super - easy and cool";

var parts = text.split(/-(.+)/);


console.log(  parts[0].trim()  );      // "Hello world"
console.log(  parts[1].trim()  );      // "This is super - easy and cool"

P.S:请注意,上面我使用

.trim()
只是为了摆脱字符串环绕空格,以简化正则表达式和 demo!。不过,如果
parts[1]
返回
undefined
,您会收到错误。因此,请明智地使用 - 或扩展正则表达式以考虑分隔符
-
\s?

之前和之后的可选空格

var text = "Hello world - This is super - easy and cool";

var parts = text.split(/\s?-\s?(.+)/);


console.log(  parts[0]  );      // "Hello world"
console.log(  parts[1]  );      // "This is super - easy and cool"


3
投票

给你!!

<script>
function myFunction() {
    var str = "Hello world-welome to the-universe welcome.";
    var n = str.indexOf("-");
    var str1 = str.substring(0,str.indexOf("-"));
    var str2 = str.substring(str.indexOf("-")+1);
    document.getElementById("demo").innerHTML = str1 + "<br>" + str2;
}
</script>


<button onclick="myFunction()">Try it</button>

<p id="demo"></p>


2
投票

您可以使用

match
(使用正则表达式)将每个字符串变成一对(包含 2 个字符串的数组):

const data = [
    "Blue Oyster Cult - Don't Fear The Reaper",
    "Jimi Hendrix - Come On (Let The Good Times Roll)",
    "Molly Hatchet - Dreams I'll Never See",
    "Gorillaz - 19 - 2000" 
];

const result = data.map( title => title.match(/(.*?)\s*-\s*(.*)/).slice(1) );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


2
投票

r var string = "字符串 - 有很多 - 连字符";

var firstIndex = string.indexOf('-');
var result = [string.slice(0, firstIndex).trim(), string.slice(firstIndex+1).trim()]
console.log(result);

仅在第一个部分进行中断 - 并使用修剪功能替换零件开始和结尾处的空格

https://jsfiddle.net/gLwm7Lwv/1

© www.soinside.com 2019 - 2024. All rights reserved.