我正在尝试清理文本文件,以便将其导入Excel,但文本文件包含多个双引号字段中的换行符。该文件以制表符分隔。
示例是:
"12313"\t"1234"\t"123
5679"
"test"\t"test"\t"test"
"test"\t"test"\t"test"
"12313"\t"1234"\t"123
5679"
我需要删除换行符,以便最终显示如下:
"12313"\t"1234"\t"1235679"
"test"\t"test"\t"test"
"test"\t"test"\t"test"
"12313"\t"1234"\t"1235679"
“\ t”是制表符分隔符。
我在SO上看了几个其他的解决方案,但它们似乎没有处理多行。我们尝试过使用多种CSV解析器解决方案,但似乎无法让它们适用于这种情况。目标是将整个字符串传递给REGEX表达式并让它返回,并且在引号之外的换行符保留的情况下删除引号之间的所有换行符。
答案 0 :(得分:5)
答案 1 :(得分:0)
如果仅删除空白行:
string text = Regex.Replace( inputString, @"\n\n", "" , RegexOptions.None | RegexOptions.Multiline );
答案 2 :(得分:0)
这对我有用:
var fixedCsvFileContent = Regex.Replace(csvFileContent, @"(?!(([^""]*""){2})*[^""]*$)\n+", string.Empty);
没有工作:
var fixedCsvFileContent = Regex.Replace(csvFileContent, @"(?!(([^""]*""){2})*[^""]*$)\n+", string.Empty, RegexOptions.Multiline);
因此,在对输入字符串进行检查时,不得添加RegexOptions.Multiline。
答案 3 :(得分:-1)
string output = Regex.Replace(input, @"(?<=[^""])\r\n", string.Empty);