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

时间:2013-05-30 19:41:36

标签: c# regex split

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

“(11)123456(14)ABC123(18)gt567”

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

  • “(11)123456”
  • “(14)abc123”
  • “(18)gt567”

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

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:6)

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

答案 2 :(得分:1)

类似的东西:

string theString = "(11)123456(14)abc123(18)gt567";

Regex reSplit = new Regex(@"\(\d+\)[^\(]+");
var matches = reSplit.Matches(theString);

这将为您提供一组Match个对象,然后您可以检查它们。

获取字符串数组:

var splits = matches.Cast<Match>().Select(m => m.Value).ToArray();

答案 3 :(得分:0)

您可以使用正则表达式及其Split method来获取部件数组。

var s = "(11)123456(14)abc123(18)gt567";
var pattern = new Regex(@"(\([^\(]+)");
var components = pattern.Split(s)

该模式匹配左括号,后跟任意数量的字符,直到下一个左括号。

如果你需要处理新行等空格,你可能需要稍微调整模式or the RegexOptions