在特定字符处拆分字符串但忽略某些情况 C# LINQ

Posted

技术标签:

【中文标题】在特定字符处拆分字符串但忽略某些情况 C# LINQ【英文标题】:Split string at specific character but ignore some cases C# LINQ 【发布时间】:2013-01-12 18:45:40 【问题描述】:

我需要用逗号分隔字符串,但忽略某些情况。

例如这个字符串(每个逗号后面是一个空格字符):

我的词 1,我的词 2,我的词 3,“我的词 x,我的词 y,我的词 z”,我的词 4,我的词 5

应该拆分以便显示:

我的话 1

我的话 2

我的话 3

“我的词 x,我的词 y,我的词 z”

我的话 4

我的话 5

基本上所有的单词都应该在逗号之后分开,除了双引号中的单词应该与引号一样显示。

【问题讨论】:

【参考方案1】:
string text = @"my word 1, my word 2, ""my word x, my word y"", my word 3";
string pattern = @"[^,""]+|""([^""]*)""";
IEnumerable<string> result = Regex.Matches(text, pattern).Cast<Match>()
                                  .Select(m => m.Value.Trim())
                                  .Where(s => !String.IsNullOrWhiteSpace(s));

结果:

my word 1     
my word 2    
"my word x, my word y"    
my word 3

【讨论】:

以上是关于在特定字符处拆分字符串但忽略某些情况 C# LINQ的主要内容,如果未能解决你的问题,请参考以下文章

如何拆分字符串,在特定字符处中断?

在某个字符的最后一次出现处拆分字符串

如何拆分字符串 C# 并忽略字符串中的不完整单词

在逗号上拆分字符串但忽略双引号内的逗号?

拆分csv文件,但忽略c#中引号之间的新行

按分隔符拆分字符串并跳过分隔符后跟某些字符的部分