使用正则表达式,我找不到将csv文本中的每个字段都包装在双引号中的解决方案。 问题在于可能已经有双引号字段了。
示例:
Country;Product Family;Product SKU;Commercial Status
Germany;Aprobil;"Apro&'bil_1_5 mL";Actively Marketed
应该是
"Country";"Product Family";"Product SKU";"Commercial Status"
"Germany";"Aprobil";"Apro&'bil_1_5 mL";"Actively Marketed"
基本上,我在正则表达式中遇到两个逻辑部分时遇到问题...
谢谢!
答案 0 :(得分:2)
我认为您需要进行2次替换,第一个正则表达式如下:
/([\w ]+[^;\n]*|\"[^\"]*\")/g
正则表达式将匹配:
任何Word
字符或Space
,重复1次或更多次,后跟任何不是半冒号';
'或newline
的字符,任意数量的时间。
双引号quote
,其后任意字符不是双引号,以任意次数结束,以双引号结束。
然后,您将匹配项替换为:\"\1\"
。
最后,您将2个双引号替换为一个双引号。
在JavaScript中,这是:
var test = 'Country;Product Family;Product SKU;Commercial Status\n'
+ 'Germany;Aprobil;"Apro&'bil_1_5 mL";Actively Marketed\n';
var regex = /([\w ]+[^;\n]*|\"[^\"]*\")/g;
test = test.replace(regex, '\"\1\"'); // wrap in double quotes
test = test.replace(/\"\"/g, '\"'); // replace 2 quotes with one
现在您应该拥有想要的东西。