普通的分割方法是这样的:
var a = " a @b c "
console.log(a.split(" "))
["", "a", "b", "c", ""]
但我的期望输出是:
[" a", "@b", "c "]
,这可能吗?怎么做?普通的分割方法是这样的:
var a = " a @b c "
console.log(a.split(" "))
["", "a", "b", "c", ""]
[" a", "@b", "c "]
,这可能吗?怎么做?一种方法是使用正则表达式,并要求在空格之前和之后有单词边界:
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)
);
这样怎么样呢
a.split(/(?!^) (?!$)/)
如果可能有多个空格并且支持回顾后发现,那么
a.split(/(?<!^ *) +(?! *$)/)
var a = " a b c ";
a = a.trim();
console.log(a.split(" "));
更新
我读取期望的输出时犯了错误,我的建议代码的结果是:
["a", "b", "c"] 而不是 [" a", "b", "c "]