如何使用JS仅在字符串的中间按空格分割字符串

时间:2018-08-30 06:49:22

标签: javascript string split

常规拆分的工作方式如下:

[" a", "@b", "c "]

但是我的预期输出是:123456789123456789-1有可能吗?又如何?

3 个答案:

答案 0 :(得分:6)

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

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是另一种选择,但尚不足以使其在生产代码中可靠。

答案 1 :(得分:1)

怎么样

a.split(/(?!^) (?!$)/)

如果可能有多个空间并且支持向后搜索,那么

a.split(/(?<!^ *) +(?! *$)/)

答案 2 :(得分:-4)

您可以在分割前修剪字符串,例如:

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

更新

我错读了预期的输出,我的建议代码的结果是:

[“ a”,“ b”,“ c”]而不是[“ a”,“ b”,“ c”]