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

Javascript 拆分带限制的字符串,其中最后一个字符串包含余数,javascript,string,split,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”。i、 e.我希望p2包含字符串的其余部分,不管它有多少下划线(类似于c#的string.Split(char[]separator

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”。i、 e.我希望p2包含字符串的其余部分,不管它有多少下划线(类似于c#的string.Split(char[]separator,int count)的行为)

有什么解决办法吗?

只要尝试一下:

var parts = str.split('_', 2);
var p1 = parts.shift();
var p2 = parts.join('_');
或:


这将进行普通拆分,但随后会合并第一次匹配后的所有内容。

编写您自己的函数:

function split(string, delimiter, n) {
    var parts = string.split(delimiter);
    return parts.slice(0, n - 1).concat([parts.slice(n - 1).join(delimiter)]);
}
Regexp解决方案(您可以将“|”更改为其他字符,例如“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

let str='hello\u world\u there'
让[p1,p2]=str.replace(/_/,“|”)拆分(“|”);
控制台日志(“p1:”,p1);

console.log(“p2:,p2);
这与按原样处理其余部分略有不同,但在我的例子中这很有用:

const[a,…b]=“foo/bar/baz.”拆分(“/”);
//=>a'foo',b:['bar',baz']

我喜欢你的态度,但它只会产生一个新的问题,与一些随机的其他字符相关,如
|
如果你按正则表达式进行拆分,如
str.split(/\s+/)
然后将其更改为
str.split(/(\s+)
(例如,在整个正则表达式周围添加括号),然后使用
slice(2)。join(“”
而不是
slice(1)。join在上面的解决方案中,(“”“)
var str = 'hello_world_there';
var parts = str.split('_');

var p1 = parts[0];
var p2 = parts.slice(1).join('_');
function split(string, delimiter, n) {
    var parts = string.split(delimiter);
    return parts.slice(0, n - 1).concat([parts.slice(n - 1).join(delimiter)]);
}
var [p1,p2] = str.replace(/_/,"|").split("|");