拆分字符串,同时保留用引号括起来的值(.NET)

Pat*_*Pat 2 .net

我正在寻找一种方法,在.NET中,分割字符串,同时忽略引号(或另一个分隔符)内的分割字符.(如果拆分分隔符是逗号,则此功能将与典型的CSV解析器的功能相匹配.)我不确定为什么没有内置此功能String.Split().

Guf*_*ffa 5

您可以使用正则表达式.例:

string test = @"this,i""s,a"",test";
string[] parts =
  Regex.Matches(test, @"(""[^""]*""|[^,])+")
  .Cast<Match>()
  .Select(m => m.Value)
  .ToArray();

foreach (string s in parts) Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)

输出:

this
i"s,a"
test
Run Code Online (Sandbox Code Playgroud)