我的脚本我需要从短划线/连字符中分割出一个字符串。并将每个部分分配给一个变量。
示例:
Blue Oyster Cult - Don't Fear The Reaper
Jimi Hendrix - Come On (Let The Good Times Roll)
Molly Hatchet - Dreams I'll Never See
我认为正则表达式可以用[\-]+
来做,但我正在寻找一种方法,它不会产生两个以上的变量。
所以无论它采用什么字符串,结果必须只有两个部分。我认为最好的方法是只考虑字符串中的第一个-
(连字符)。
知道怎么做到这一点?
提前致谢。
答案 0 :(得分:5)
只需.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"

PS:注意上面我使用.trim()
只是为了摆脱字符串包装空格以简化正则表达式和演示! ...虽然如果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"

答案 1 :(得分: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 :(得分:2)
r var string =“string - with many - hyphens”;
var firstIndex = string.indexOf('-');
var result = [string.slice(0, firstIndex).trim(), string.slice(firstIndex+1).trim()]
console.log(result);
仅在第一次中断 - 并使用trim函数
替换零件开始和结束处的空格答案 3 :(得分: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; }