如何使用多个分隔符拆分字符串并保留分隔符?

3

我有一个字符串"abc({",现在我想通过"("分隔符进行拆分,我知道可以使用String.split来实现。
但是,是否有一种方法可以按此符号拆分,但不会丢失它?如果我使用split,我将得到这个string[] = { "abc" , "{" },但我想要{ "abc" , "(" , "{" }
同时,是否有一种方法可以使用多个分隔符进行拆分?


如果你有这样一个字符串:abc((({,并且你按照 ( 进行分割,你希望得到什么结果? - CodingYoshi
我总是想保留分隔符,所以 { abc , ( , ( , ( , { } - vertigo
使用 var results = System.Text.RegularExpressions.Regex.Split(s, @"(\()").Where(m=>!string.IsNullOrEmpty(m)); - Wiktor Stribiżew
对于多个分隔符,只需将它们添加到正则表达式中。要使用@"([({])" 正则表达式通过 {( 进行分割。要使用@"(abc|[{(])" 正则表达式通过abc{(进行拆分。 - Wiktor Stribiżew
1个回答

2

使用带有捕获组的模式来使用Regex.Split

如果在Regex.Split表达式中使用了捕获括号,则任何捕获的文本都包含在生成的字符串数组中。

请参见C#演示

var s = "abc({";
var results = Regex.Split(s, @"(\()")
    .Where(m=>!string.IsNullOrEmpty(m))
    .ToList();
Console.WriteLine(string.Join(", ", results));
// => abc, (, {
(\()正则表达式匹配并捕获(符号到第1个捕获组中,因此捕获的部分也会在输出的字符串列表中显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接