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