我知道这个(或类似的)已被多次询问,但尝试了许多可能性,我无法找到一个100%正常的正则表达式.
我有一个CSV文件,我试图将它拆分成一个数组,但遇到两个问题:引用逗号和空元素.
CSV看起来像:
123,2.99,AMO024,Title,"Description, more info",,123987564
Run Code Online (Sandbox Code Playgroud)
我试图使用的正则表达式是:
thisLine.split(/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/)
Run Code Online (Sandbox Code Playgroud)
唯一的问题是在我的输出数组中,第5个元素是123987564,而不是空字符串.
我有一个字符串:
Hi there, "Bananas are, by nature, evil.", Hey there.
Run Code Online (Sandbox Code Playgroud)
我想用逗号作为分隔符分割字符串。如何让 .split 方法忽略引号内的逗号,以便它返回 3 个字符串而不是 5 个。
要读取CSV文件,请使用以下语句:
var query = from line in rawLines
let data = line.Split(';')
select new
{
col01 = data[0],
col02 = data[1],
col03 = data[2]
};
Run Code Online (Sandbox Code Playgroud)
我想要读取的CSV文件格式不正确,;当用qutation标记包围时,条目可以将分隔符本身作为数据.
例:
col01;col02;col03
data01;"data02;";data03
Run Code Online (Sandbox Code Playgroud)
我上面的阅读声明在这里不起作用,因为它将第二行解释为四列.
问题:是否有一种简单的方法可以正确处理这种格式错误的CSV?也许还有另一个LINQ查询?
我知道这个问题花了很多时间,但有不同的答案; 我很迷惑.
我的行是:
1,3.2,BCD,"qwer 47"" ""dfg""",1
Run Code Online (Sandbox Code Playgroud)
可选的引用和双引号MS Excel标准.(数据:qwer 47" "dfg"表示如下"qwer 47"" ""dfg""".)
我需要一个正则表达式.