有将字符串根据字符转化为数组(不用spilt方法)的方法吗?

陌上人如玉
  • 74

如 str = '123|345|567'
我要将这个字符串根据‘|’转化成数组,转化的数组要除去‘|’这个字符,除了split方法还有什么方式吗?

回复
阅读 2k
5 个回答
liny
  • 1.4k
✓ 已被采纳

reg = /\d*/g;
str.match(reg)

我在想为什么不用split,这种内置方法效率极高,而且久经考验啊,比你可能的实现(未经考验)好多了。

如果仅仅是讨论算法,则有很多方式,包括上面提到的,此外还可以自己实现,比如利用indexOf之类的查找来实现。
我这里给你一种比较奇怪的实现

let aStr=('123sdf|345sdf sdf |567').replace('|','","');
let aJSONStr='["'+aStr+'"]' ;
let Arr=JSON.parse(aJSONStr);
zangeci
  • 11.2k

字符串处理通常都是用正则'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;
}

非常感谢大家,我的问题已经解决了,谢谢了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏