正则表达式仅用于修饰逗号,但不能介于文本和引号之间-Java脚本

时间:2018-08-21 14:39:11

标签: javascript regex csv

我有一种情况,我需要修剪csv中的单元格,但是我需要保留文本之间的空格,并且不应该修剪引号中的文本,而是像其他单元格一样修剪引号周围的空格。

示例:

 -->     first one, secondone ,  " third one "  , fourth one  

应该是

 -->first one,secondone,"third one",fourth one

我遵循了这个 link,它部分地回答了我的问题,但是它也删除了单词之间的空格。我已经在此项目上做了一些工作,但没有成功。请协助解决此问题。另外,当我尝试应用链接中发布的答案(针对c#)时,我得到警告,指出并非所有浏览器都支持“负向后搜索”。是否有其他可替代的正则表达式来实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下正则表达式:

var a='     first one, secondone ,  " third one "  , fourth one  ';
console.log(a.replace(/\b\s*\B|\B\s*\b|\B\s*\B/g,''));//logs 'first one,secondone,"third one",fourth one'
  • \b字边界
  • \B不是单词边界

以上任何组合之间的空格都将被替换(\ b和\ b之间的空格除外)。

答案 1 :(得分:0)

假设您的目标是输出不带这些空格的CSV格式的字符串,或者从可能包含或不包含这些空格的CSV文件中读取值,那么我认为最好的解决方案是以下之一: / p>

如果您要输出CSV:

大概您有一些String集合,其中每个String可能有也可能没有前导和/或尾随空格。在这种情况下,最好的选择是遍历字符串的集合并在每个字符串上调用String.trim()-trim() method删除前导和尾随空格。

工作完成后,可以通过在构建String的任何代码中包含对trim()的调用来提高效率。

如果您正在读取CSV文件:

假设您有一个表示文件中单行的字符串,并且将其拆分为,字符以创建字符串集合。如上所述,然后可以遍历该集合,对每个String调用trim()