使用Regex在csv列中替换\ r \ n

朱利安

我的问题如下:

我有一个csv文件,其中的数据用双引号(“)括起来。行
的结尾是\r\n(十六进制值:)0D0A

我的问题:一列可以包含\r\n(通常是带有回车符的书面句子)。
当我想在excel中加载CSV时,此\ r \ n被理解为新行。

我的问题解决方案是:使用正则表达式执行以下逻辑:

  • 一列以双引号开始,以双引号结束
  • 实际的新行用\ r \ n标识
  • 有问题的列以双引号(“)开头,包含\ r \ n,并以双引号(”)结尾

    为每个有问题的列中找到(使用正则表达式)
    替换\ r \ n,其中空间(十六进制值:20)

任何regex与c#一起使用的解决方案

非常感谢你的帮助

阿里

我想不出一种简单的方法来查找有问题的条目(并不意味着没有任何条目),但是有一种简单的方法可以找到用双引号引起来的所有条目。然后,如果它们是ptoblematic,则可以对其进行更改:

var result = Regex.Replace(input, @"""(?:(\r\n)|[^""])+""", delegate(Match m)
            {
                if (string.IsNullOrEmpty(m.Groups[1].Value))
                    return m.Value;
                return m.Value.Replace("\r\n", " ");
            });

可能的问题:

如果您的文件转义了双引号字符,则可能无法正常工作。您必须对其进行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章