如 str = '123|345|567'
我要将这个字符串根据‘|’转化成数组,转化的数组要除去‘|’这个字符,除了split方法还有什么方式吗?
如 str = '123|345|567'
我要将这个字符串根据‘|’转化成数组,转化的数组要除去‘|’这个字符,除了split方法还有什么方式吗?
我在想为什么不用split,这种内置方法效率极高,而且久经考验啊,比你可能的实现(未经考验)好多了。
如果仅仅是讨论算法,则有很多方式,包括上面提到的,此外还可以自己实现,比如利用indexOf之类的查找来实现。
我这里给你一种比较奇怪的实现
let aStr=('123sdf|345sdf sdf |567').replace('|','","');
let aJSONStr='["'+aStr+'"]' ;
let Arr=JSON.parse(aJSONStr);
字符串处理通常都是用正则'123sdf|345sdf sdf |567'.match(/[^|]*/g).filter(Boolean)
;
也可以循环字符串处理
console.log(parseString2Array('123|24234sdfsdf|323423', '|'))
function parseString2Array(str,splitstr) {
var res = [];
var index = 0;
while(true) {
var next = str.indexOf(splitstr, index);
if(next === -1) {
res.push(str.slice(index))
break;
}
res.push(str.slice(index,next))
index = next+splitstr.length;
}
return res;
}
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
reg = /\d*/g;
str.match(reg)