Javascript:按逗号拆分字符串,但忽略引号中的逗号
我有一根像下面这样的线Javascript:按逗号拆分字符串,但忽略引号中的逗号,javascript,regex,csv,split,Javascript,Regex,Csv,Split,我有一根像下面这样的线 var str="A,B,C,E,'F,G,bb',H,'I9,I8',J,K" 我想用逗号分隔字符串。但是,在单引号内的情况下,我需要它忽略逗号,如下所示 A B C E F,G,bb H I9,I8 J K 尽管您提出了这一要求,但您可能无法解释以下情况: 'bob's'是一个字符串,其中'被转义 a',c a、b a,b, ,a,b a,b' ,a,b ,a,b,c' 上述的一些问题是由这一机构正确处理的;其他人则不然。我强烈建议人们现在或
var str="A,B,C,E,'F,G,bb',H,'I9,I8',J,K"
我想用逗号分隔字符串。但是,在单引号内的情况下,我需要它忽略逗号,如下所示
A
B
C
E
F,G,bb
H
I9,I8
J
K
尽管您提出了这一要求,但您可能无法解释以下情况:
是一个字符串,其中'bob's'
被转义'
a',c
a、b
a,b,
,a,b
a,b'
,a,b
,a,b,c'
正则表达式的解释:
-表示匹配('[^']+'.[^,]+)
或'[^']+'
[^,]+
表示引用…一个或多个非引用…引用李>“[^']+”
表示一个或多个非逗号[^,]+
注意:通过在无引号字符串之前使用带引号的字符串,我们可以更轻松地解析无引号字符串的大小写。这是我的版本,它可以使用单引号和双引号,并且可以有多个带引号的字符串,并嵌入逗号。它给出的结果是空的,而且太多,所以你必须检查一下。没有经过严格的测试。请原谅过度使用“\”
var sample='this=that, \
sometext with quoted ",", \
for example, \
another \'with some, quoted text, and more\',\
last,\
but "" "," "asdf,asdf" not "fff\',\' fff" the least';
var it=sample.match(/([^\"\',]*((\'[^\']*\')*||(\"[^\"]*\")*))+/gm);
for (var x=0;x<it.length;x++) {
var txt=$.trim(it[x]);
if(txt.length)
console.log(">"+txt+'<');
}
var sample='this=that\
带引号“,”的文本\
比如说,\
另一个“包含一些引用文本和更多内容”\
最后,\
但是“asdf,asdf”不是“fff”,至少是“fff”;
var it=sample.match(/([^\',]*((\'[^\']*\')*| |(\“[^\']*”)+/gm);
对于(var x=0;x使用此
var input="A,B,C,E,'F,G,bb',H,'I9,I8',J,K";
//Below pattern will not consider comma(,) between ''. So 'I9,I8' will be considered as single string and not spitted by comma(,).
var pattern = ",(?=([^\']*\'[^\']*\')*[^\']*$)";
//you will get acctual output in array
var output[] = input.split(pattern);
可能是重复的谢谢你,它对我有效。你提到的情况不影响me@gdoron:('[^']+'.[^,]+)
-表示“匹配'[^']+'
或[^,]+
”'[^']+'
表示“引用…一个或多个非引号…引用”。[^,]+
表示“一个或多个非逗号”@gdoron:同样,通过在非引号字符串之前使用引号字符串,我们可以更轻松地解析非引号字符串大小写。虽然此代码片段可能会解决问题,包括一个解释,以提高您的帖子质量。请记住,您是在将来为读者回答问题,而不仅仅是现在提问的人!请注意r回答添加解释,并说明适用的限制和假设。
var input="A,B,C,E,'F,G,bb',H,'I9,I8',J,K";
//Below pattern will not consider comma(,) between ''. So 'I9,I8' will be considered as single string and not spitted by comma(,).
var pattern = ",(?=([^\']*\'[^\']*\')*[^\']*$)";
//you will get acctual output in array
var output[] = input.split(pattern);