e.g。如果我运行这个javascript:
var str = 'hello_world_there';
var parts = str.split('_', 2);
var p1 = parts[0];
var p2 = parts[1];
最后,p1包含" hello",p2包含" world"。
我希望p1包含" hello"和p2以包含" world_there"。即我希望p2包含字符串的其余部分,无论它有多少下划线(类似于c#' String.Split(char [] separator,int count)的行为。
有任何变通方法吗?
答案 0 :(得分:7)
var str = 'hello_world_there';
var parts = str.split('_');
var p1 = parts[0];
var p2 = parts.slice(1).join('_');
这将进行普通的分割,但然后将所有内容合并到第一场比赛之后。
答案 1 :(得分:4)
这与其余部分略有不同,但这在我的情况下很有用:
const [a, ...b] = 'foo/bar/baz'.split('/');
// => a: 'foo', b: ['bar', 'baz']
答案 2 :(得分:2)
编写自己的函数:
function split(string, delimiter, n) {
var parts = string.split(delimiter);
return parts.slice(0, n - 1).concat([parts.slice(n - 1).join(delimiter)]);
}
答案 3 :(得分:1)
试试:
var parts = str.split('_', 2);
var p1 = parts.shift();
var p2 = parts.join('_');
或:
var index = str.indexOf('_');
var p1 = str.substr(0, index);
var p2 = str.substr(index + 1);
答案 4 :(得分:0)
正则表达式解决方案(您可以将“ |”更改为其他字符,例如“ __”,但不能更改为“ _”)
var [p1,p2] = str.replace(/_/,"|").split("|");
let str = 'hello_world_there'
let [p1,p2] = str.replace(/_/,"|").split("|");
console.log("p1:",p1);
console.log("p2:",p2);