Javascript JS/TS通过分隔符拆分字符串而不删除分隔符

Javascript JS/TS通过分隔符拆分字符串而不删除分隔符,javascript,typescript,Javascript,Typescript,我有一个字符串,需要用某个分隔符拆分并转换为数组,但不删除分隔符本身。 例如,考虑下面的代码: var str = "#mavic#phantom#spark"; str.split("#") //["", "mavic", "phantom", "spark"] 我需要输出如下: ["#mavic", "#phantom", "#spark"] 我读了,但这并没有回答我的问题。你可以通过对进行正面的前瞻 var string=“#mavic#phantom#spark”, splitte

我有一个字符串,需要用某个分隔符拆分并转换为数组,但不删除分隔符本身。 例如,考虑下面的代码:

var str = "#mavic#phantom#spark";
str.split("#") //["", "mavic", "phantom", "spark"]
我需要输出如下:

["#mavic", "#phantom", "#spark"]
我读了,但这并没有回答我的问题。

你可以通过对
进行正面的前瞻

var string=“#mavic#phantom#spark”,
splitted=string.split(/(?=#))/;
console.log(拆分)
#
拆分字符串,并使用
reduce
返回修改后的字符串

var str=“#mavic#phantom#spark”;
设x=str.split(#”).reduce((acc,curr)=>{
如果(当前!=''){
加速推力(“#”+电流);
}
返回acc;
}, [])

console.log(x)
这里还有一些解决任务的非regexp方法:

解决方案1经典方法-迭代字符串,每次当我们找到分隔符的
索引时,我们将当前位置和下一位置之间的子字符串推送到结果数组。在else块中,我们有最后一个子字符串的例子——我们只需将其添加到结果数组中并中断循环

const delimiter = '#';
const result1 = [];
let i = 0;
while (i < str.length) {
  const nextPosition = str.indexOf(delimiter, i+1);
  if (nextPosition > 0) {
    result1.push(str.substring(i, nextPosition));
    i = nextPosition;
  } else {
    result1.push(str.substring(i));
    break;
  }
}
另一种方式: 拆分后过滤空元素,并将这些元素映射为以拆分后的角色开头

string.split("#").filter((elem) => elem).map((elem) => "#" + elem);

正则表达式非常棒。我喜欢用它来测试它们(还在学习!)太棒了。这正是我所需要的,有趣的是,我从未听说过“积极展望”。非常感谢。这里重要的一点是分隔符可以是字符串或正则表达式<代码>映射将更容易。@NinaScholz最初我想到映射,但第0个索引处的元素未定义
slice(1)。映射(…)
您没有拆分(IMO),而是匹配
/\[^\]+/g
string.split("#").filter((elem) => elem).map((elem) => "#" + elem);