我想将一个字符串(任何字符串)按空格分割成一个数组,最好使用 split()
方法。但是,我希望忽略引号中的空格。
举个例子:
'word "words in double quotes"'
它应该成为一个数组:
[
'word',
'words in double quotes'
]
我查看了类似的答案,他们通常给出一个数组:
[
'word',
'"words in double quotes"'
]
这不是我要找的。我不想将引号添加到数组元素中。
我可以使用什么正则表达式?
最佳答案
我不认为你想要的可以通过使用 String.prototype.split
来实现单独使用,因为它的使用很可能会导致结果数组中出现空字符串;这就是你给的字符串。如果您需要一个通用的解决方案来解决您的问题,我相信 split
根本不起作用。
如果您的目标是无论实际字符串如何都产生相同的结果,我建议您使用 String.prototype.match
的组合, [].map
和 String.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/