JS string.split() 不删除分隔符

IT技术 javascript split delimiter
2021-01-27 20:59:14

如何在不删除分隔符的情况下拆分字符串?

假设我有一个字符串: var string = "abcdeabcde";

当我这样做时 var newstring = string.split("d"),我会得到这样的信息:

["abc","eabc","e"]

但我想得到这个:

["abc","d","eabc","d","e"]

当我尝试执行“split2”函数时,我陷入了 splice() 和索引以及“this”与“that”之间的纠缠……啊!帮助!:D

6个回答

尝试:

"abcdeabcde".split(/(d)/);
请注意,由于 JScript 错误,这在 IE 中不起作用。
2021-03-14 20:59:14
OP 没有指定环境是否是浏览器
2021-03-25 20:59:14
这应该是公认的答案:它更简单、更安全,而且最近很少需要 IE
2021-03-29 20:59:14
@MikeAono:stackoverflow.com/a/45323715/859877,使用正则表达式/(?=d)/g
2021-04-09 20:59:14
哪个 IE 不起作用?
2021-04-10 20:59:14

我喜欢凯的回答,但它不完整。而是使用:

"abcdeabcde".split(/(?=d)/g) //-> ["abc", "deabc", "de"]

这是在正则表达式中使用前瞻零长度断言,这使得匹配不属于捕获组。不需要其他技巧或解决方法。

有没有办法得到这个结果://-> ["abcd", "eabcd", "e"]
2021-03-29 20:59:14
@forrest 不使用单个拆分命令,AFAIK。但奇怪的是,接受的答案几乎就是这样,除了前导分隔符而不是尾随。
2021-04-07 20:59:14

试试这个:

  1. 将所有“d”实例替换为“,d”
  2. 用“,”分割
var string = "abcdeabcde";
var newstringreplaced = string.replace(/d/gi, ",d");
var newstring = newstringreplaced.split(",");
return newstring;

希望这可以帮助。

bobince,是的,我想如果原始字符串在某处包含 ',' 是不安全的。但我喜欢原则。
2021-03-14 20:59:14
您的解决方案有一个错误 - 当我不是用“,d”而是用“,d,”替换实例时,它会起作用。好主意!因为简单而接受:)
2021-03-18 20:59:14
,对原始字符串中的任何一个都失败
2021-03-18 20:59:14
"abcdeabcde".split(/(d)/);
2021-03-27 20:59:14
根据萤火虫分析器的最快答案
2021-04-09 20:59:14
var parts= string.split('d');
for (var i= parts.length; i-->1;)
    parts.splice(i, 0, 'd');

(反向循环是必要的,以避免将ds添加到已d插入 s的列表部分。)

+1 比接受的答案安全得多。
2021-03-16 20:59:14
使用-->运算符加一:D
2021-04-10 20:59:14
这比接受的答案要好,比正则表达式或用可能自然发生的特殊字符替换要好
2021-04-11 20:59:14
看到这个答案,我再次很高兴使用更漂亮的…+1 的功能!
2021-04-11 20:59:14

可以在一行中完成:

var string = "abcdeabcde";    
string.split(/(d)/);
["abc", "d", "eabc", "d", "e"]
@MikeAono:stackoverflow.com/a/45323715/859877,使用正则表达式/(?=d)/g
2021-04-04 20:59:14
此解决方案已发布在此处
2021-04-05 20:59:14
如果我希望结果是 ["abc","deabc", "de"] 怎么办?
2021-04-10 20:59:14
@Mike Aono - 拆分并不是真的那样工作。您可以在“c”之后或“d”之前添加某种分隔符。像这样: var string = "abcdeabcde"; string = string.replace(/d/gi,",d"); string.split(",");
2021-04-11 20:59:14