首页 > 解决方案 > 如何使用JS仅在字符串中间按空格分割字符串

问题描述

正常拆分是这样的:

var a = " a @b c "
console.log(a.split(" "))
["", "a", "b", "c", ""]

但我的预期输出是:[" a", "@b", "c "]有可能吗?如何?

标签: javascriptstringsplit

解决方案


一种选择是使用正则表达式并要求空格前后的单词边界:

var a = " a b c "
console.log(a.split(/\b \b/));

如果也允许使用非单词字符,则可以match改用 - 匹配字符串开头的空格,后跟非空格,或匹配非空格,后跟空格和字符串结尾,或者匹配非-无限制空间:

const a = " foo @bar c "
console.log(
  a.match(/^ *\S+|\S+ *$|\S+/g)
);

Lookbehind 是另一种选择,但它的支持不足以在生产代码中可靠。


推荐阅读