仅在一个点处拆分字符串

时间:2017-04-12 19:36:49

标签: javascript jquery regex split

我的脚本我需要从短划线/连字符中分割出一个字符串。并将每个部分分配给一个变量。

示例:

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

我认为正则表达式可以用[\-]+来做,但我正在寻找一种方法,它不会产生两个以上的变量。 所以无论它采用什么字符串,结果必须只有两个部分。我认为最好的方法是只考虑字符串中的第一个-(连字符)。

知道怎么做到这一点?

提前致谢。

4 个答案:

答案 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函数

替换零件开始和结束处的空格

https://jsfiddle.net/gLwm7Lwv/1

答案 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; }