分割字符串,在结果中保留分隔符- c#



我想用分隔符拆分字符串,但在结果中保留分隔符。

我如何在c#中做到这一点?
我找了好几篇帖子,但没有一个能帮我找到答案。

例子
string stringToSplit = "(10)12345(20)dk34jf(3)li33";

我需要的结果是

(10)12345  
(20)dk34jf  
(3)li33

您可以通过使用正则表达式根据分隔符拆分字符串,然后将分隔符包含在结果数组中来实现这一点。下面是一个例子:

string stringToSplit = "(10)12345(20)dk34jf(3)li33";
string pattern = @"(d+)w+";
var matches = Regex.Matches(stringToSplit, pattern);
foreach (var match in matches) {
Console.WriteLine(match.Value);
}
// Output:
// (10)12345
// (20)dk34jf
// (3)li33

JS中的代码片段:

let stringToSplit = "(10)12345(20)dk34jf(3)li33";
let result = stringToSplit.match(/(d+)w+/g);
console.log(result);

不使用正则表达式的简单方法是按(:

分割
string stringToSplit = "(10)12345(20)dk34jf(3)li33";
string[] result = stringToSplit.Split('(', StringSplitOptions.RemoveEmptyEntries)
.Select(s => "(" + s)
.ToArray();
foreach (string match in result) {
Console.WriteLine(match);
}

(10)12345
(20)dk34jf
(3)li33

如果括号内的数字不在字符串的开头,这种方法也适用:

string stringToSplit = "(10)12345(20)dk34jf(3)li33";
//string stringToSplit = "12345(20)dk34jf(3)li33";
var res = stringToSplit.Split("(")
.Where(i => !string.IsNullOrEmpty(i))
.Select(i => {
return i.Contains(")")? "(" + i : i;
}).ToList();
Console.WriteLine(string.Join('n', res));

你可以这样使用正则表达式:

string stringToSplit = "(10)12345(20)dk34jf(3)li33";
Regex regex = new Regex(@"(d+)[^()]+");
MatchCollection matches = regex.Matches(stringToSplit);
foreach (Match match in matches) {
Console.WriteLine(match.Value);
}
/*
Output:
(10)12345
(20)dk34jf
(3)li33
*/

最新更新