在C#中拆分此字符串的好方法是什么?

Jim*_*m K 0 c# regex split

我需要在C#中拆分一个字符串,格式如下:

"(11)123456(14)ABC123(18)gt567"

期望的结果是字符串数组,例如:

  • "(11)123456"
  • "(14)ABC123"
  • "(18)gt567"

我猜测正则表达可能会涉及但这是我的弱点之一.

Shl*_*omo 8

var s = "(11)123456(14)abc123(18)gt567";

Regex r = new Regex(@"\(\d+\)\w+");

var matches = r.Matches(s);

string[] array = new string[matches.Count];
for(int i = 0; i < matches.Count; i++)
    array[i] = matches[i].Captures[0].Value;
Run Code Online (Sandbox Code Playgroud)


Dam*_*ith 6

 var result = "(11)123456(14)abc123(18)gt567"
            .Split(new string[]{"("}, StringSplitOptions.RemoveEmptyEntries)
            .Select(i => "(" + i).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 聪明的答案,比RegEx替代品表现更好. (2认同)