javascript - 按空格分割字符串,但忽略引号中的空格

标签 javascript regex

我想将一个字符串(任何字符串)按空格分割成一个数组,最好使用 split() 方法。但是,我希望忽略引号中的空格。

举个例子:

'word "words in double quotes"'

它应该成为一个数组:

[
  'word',
  'words in double quotes'
]

我查看了类似的答案,他们通常给出一个数组:

[
  'word',
  '"words in double quotes"'
]

这不是我要找的。我不想将引号添加到数组元素中。

我可以使用什么正则表达式?

最佳答案

我不认为你想要的可以通过使用 String.prototype.split 来实现单独使用,因为它的使用很可能会导致结果数组中出现空字符串;这就是你给的字符串。如果您需要一个通用的解决方案来解决您的问题,我相信 split 根本不起作用。

如果您的目标是无论实际字符串如何都产生相同的结果,我建议您使用 String.prototype.match 的组合, [].mapString.prototype.replace如图:

代码:

var
  /* The string. */
  string = 'apples bananas "apples and bananas" pears "apples and bananas and pears"',

  /* The regular expression. */
  regex = /"[^"]+"|[^\s]+/g,

  /* Use 'map' and 'replace' to discard the surrounding quotation marks. */
  result = string.match(regex).map(e => e.replace(/"(.+)"/, "$1"));
  
console.log(result);

<小时/>

所用正则表达式的说明:

  • "[^"]+":捕获除引号之外的两个引号内的任何字符序列(至少 1 个)
  • |:逻辑或。
  • [^\s]+:捕获任意非空白字符序列(至少 1 个)
  • g:全局标志 - 匹配所有出现的指令。

关于javascript - 按空格分割字符串,但忽略引号中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48142763/

相关文章:

javascript - 是否有任何工具可以检查 Javascript 属性是否存在?

javascript - 如何使用数组进行优化?

Javascript/jQuery : Split camelcase string and add hyphen rather than space

javascript - 10+1000不会返回正确的数字Javascript

javascript - WebGL 纯色

c# - Regex 如何获取 url() 的内容

regex - sed 查找并替换 fastq 正则表达式

java - 与 ^.*(?=.*\\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&]).*$ 匹配的单词

regex - Scala 正则表达式忽略大小写

javascript - 将 React 状态对象转换为正确的 JSON 模式