拆分带限制的字符串,其中最后一个字符串包含余数

时间:2014-08-07 07:42:53

标签: javascript string split

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)的行为。

有任何变通方法吗?

5 个答案:

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