C# 基于特定字符分割字符串

C# 基于特定字符分割字符串,c#,string,list,substring,C#,String,List,Substring,我想用逗号拆分字符串,并将其添加到列表中。但如果逗号后面有两个反斜杠,则不适用 例如: aaa,aaa,aaa>>将字符串拆分为3>>aaa aa\\,a,aaa>>将字符串拆分为2>>aa\\,a aaa 我意识到我可以使用子字符串一个接一个地遍历字符来实现这一点,但我不认为这对于长字符串特别有效 在C语言中有没有更快更有效的方法来完成这个任务 谢谢大家! 此正则表达式将工作: string input = @"aaa\\,aaa,aaa"; var re = new Regex(@"(?&l

我想用逗号拆分字符串,并将其添加到列表中。但如果逗号后面有两个反斜杠,则不适用

例如:

aaa,aaa,aaa>>将字符串拆分为3>>aaa

aa\\,a,aaa>>将字符串拆分为2>>aa\\,a aaa

我意识到我可以使用子字符串一个接一个地遍历字符来实现这一点,但我不认为这对于长字符串特别有效

在C语言中有没有更快更有效的方法来完成这个任务


谢谢大家!

此正则表达式将工作:

string input = @"aaa\\,aaa,aaa";
var re = new Regex(@"(?<!\\),");
string[] parts = re.Split(input);
要构造新列表而不是数组,请执行以下操作:

list.AddRange(re.Split(input));
List<string> = re.Split(input).ToList();

一个很好的方法是使用一个带有


那个?是负查找,这意味着只有前两个字符不匹配时,下一个字符才匹配。

使用正则表达式。您尝试过什么吗?您可以检查逗号的2个索引之前的字符,它们是否为“\\”。是的,我可以这样做,但正如我所提到的,这对于长字符串来说是无效的。我想知道是否有更聪明的方法来解决这个问题。虽然我对你的问题有一个大致的了解,但对我来说还是有点模棱两可。您需要如何分割像aa\\\、bb或aa\\\、bb这样的字符串?这些情况有效吗?@John,很遗憾,您编辑的答案没有明确解释您需要如何处理aa\\\、bb或aa\\\、bb等字符串-请确切说明拆分这两个字符串的结果,或者这两个字符串作为输入是否可能或有效…谢谢!这正是我想要的。让我看看它是否有效。我正在尝试将拆分的字符串添加到列表中,而不是数组中。如何更改此行以适应以下内容:string[]parts=re.Splitinput;更新的答案,见底部。
List<string> = re.Split(input).ToList();
var test1 = @"aaa,aaa,aaa";
var test2 = @"aa\\,a,aaa";

var pattern = @"(?<!\\),";

Regex.Split(test0, pattern); // returns ["aaa", "aaa", "aaa"]
Regex.Split(test1, pattern); // returns [@"aa\\,a", "aaa"]