我需要在C#中拆分一个字符串,其格式如下:
“(11)123456(14)ABC123(18)gt567”
期望的结果是字符串数组,例如:
我猜测正则表达可能会涉及但这是我的弱点之一。
答案 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。