我的脚本需要从破折号/连字符中分割一个字符串。并将每一块分配给一个变量。
示例:
Blue Oyster Cult - Don't Fear The Reaper
Jimi Hendrix - Come On (Let The Good Times Roll)
Molly Hatchet - Dreams I'll Never See
我认为正则表达式可以用
[\-]+
做到这一点,但我正在寻找一种不会产生超过两个变量的方法。
因此,无论使用什么字符串,结果都必须只有两部分。我认为最好的方法是仅考虑字符串中的第一个 -
(连字符)。
知道如何实现这一目标吗?
提前致谢。
简单地做
.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"
给你!!
<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>
您可以使用
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; }
r var string = "字符串 - 有很多 - 连字符";
var firstIndex = string.indexOf('-');
var result = [string.slice(0, firstIndex).trim(), string.slice(firstIndex+1).trim()]
console.log(result);
仅在第一个部分进行中断 - 并使用修剪功能替换零件开始和结尾处的空格