Javascript 按空格分割字符串,但忽略引号中的空格
我想将一个字符串,任何字符串,按空格分割成一个数组,最好使用Javascript 按空格分割字符串,但忽略引号中的空格,javascript,regex,Javascript,Regex,我想将一个字符串,任何字符串,按空格分割成一个数组,最好使用split()方法。但是,我希望忽略引号中的空格 例如: 'word "words in double quotes"' 它应成为一个具有以下特性的阵列: [ 'word', 'words in double quotes' ] [ 'word', '"words in double quotes"' ] 我看了类似的答案,他们通常会给出一个数组: [ 'word', 'words in double qu
split()
方法。但是,我希望忽略引号中的空格
例如:
'word "words in double quotes"'
它应成为一个具有以下特性的阵列:
[
'word',
'words in double quotes'
]
[
'word',
'"words in double quotes"'
]
我看了类似的答案,他们通常会给出一个数组:
[
'word',
'words in double quotes'
]
[
'word',
'"words in double quotes"'
]
这不是我想要的。我不想在数组元素中添加引号
我可以使用什么正则表达式?我不认为仅通过使用就可以实现您想要的,因为它的使用很可能会导致结果数组中出现空字符串;这就是你给我的绳子。如果您需要一个通用的问题解决方案,我相信
split
根本不起作用
如果您的目标是在不考虑实际字符串的情况下产生相同的结果,我建议您使用和的组合,如图所示:
代码:
var
/*绳子*/
字符串='苹果香蕉'苹果和香蕉'梨'苹果和香蕉和梨',
/*正则表达式*/
正则表达式=/“[^”]+“|[^\s]+/g,
/*使用“map”和“replace”放弃周围的引号*/
result=string.match(regex.map)(e=>e.replace(/“(.+)”/,“$1”);
console.log(result);
我希望这就是您想要的:
var words='word'双引号中的单词“更多文本”引号中的内容“;
var wordArray=words.match(/“([^”]+)“|[^”]+/g);
对于(var i=0,l=wordArray.length;i
按“”拆分初始字符串
将#1的结果中的每个奇数项按空格分割
使用regexp会极大地影响代码的可读性和可维护性,尤其是当您试图解决现有的限制时(例如,缺少look-behind).单独使用split
是不可能的,因为split
无法删除最后的引号,除非引入另一个拆分。请尝试使用例如const[match,first,second]=string.match(/^(.*)(.*)$/)
可能是双引号中的单词。split(/“(.*?)\s+/g)。过滤器(布尔值)
,但这取决于引号中的引号是如何转义的这是否回答了您的问题?对不起,我的意思是让单词“带双引号的单词”
字符串作为示例。正则表达式应该与任何字符串一起使用,例如命令arg1“arg2”arg3
或苹果香蕉“苹果和香蕉”
我修正了帖子中的措辞,以消除任何混淆。请再次查看我的答案@insertcodehere。我已将其更新,以匹配任何给定字符串。我希望这有助于感谢您的帮助!@angle PolitisAlso,虽然这是一个足够的答案,但是否可以删除地图()
方法,并以某种方式将其实现到正则表达式中?不确定为什么会被否决,它工作得很好。我还做了一个jsbench,这个也更快。这应该是公认的答案,而不是Angel Politis的答案