我想使用逗号(,)拆分字符串并将其添加到列表中.但是,如果逗号跟随2个反斜杠,则不适用.
例如:
aaa,aaa,aaa >>拆分成3 >> (aaa) (aaa) (aaa)
aa\\,a,aaa >>将字符串拆分为2 >> (aa\\,a) (aaa)
我意识到我可以通过逐个遍历字符来使用子字符串来做到这一点,但我不认为这是有效的(特别是对于长字符串).
在C#中使用更快更有效的方法来实现这一目的吗?
谢谢!
这个正则表达式将起作用:
string input = @"aaa\\,aaa,aaa";
var re = new Regex(@"(?<!\\),");
string[] parts = re.Split(input);
Run Code Online (Sandbox Code Playgroud)
基本上它表示要分割每个逗号,除了逗号前面有两个反斜杠,根据您的要求.
这是编写该代码的另一种方法,它为您提供了一些注释以供将来维护:
string input = @"aaa\\,aaa,aaa";
var re = new Regex(@"
(?<! # negative lookahead, ie. 'is not preceeded by'
\\ # two backslashes
) # end of negative lookahead
, # the comma to split on
", RegexOptions.IgnorePatternWhitespace);
string[] parts = re.Split(input);
Run Code Online (Sandbox Code Playgroud)
要将字符串添加到现有列表,请执行以下操作:
list.AddRange(re.Split(input));
Run Code Online (Sandbox Code Playgroud)
要构造新列表而不是数组,请执行以下操作:
List<string> = re.Split(input).ToList();
Run Code Online (Sandbox Code Playgroud)