我需要在 C# 中拆分一个字符串,其格式如下:
“(11)123456(14)abc123(18)gt567”
期望的结果是一个字符串数组,例如:
- “(11)123456”
- “(14)abc123”
- “(18)gt567”
我猜可能涉及正则表达式,但这是我的弱点之一。
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;
var result = "(11)123456(14)abc123(18)gt567"
.Split(new string[]{"("}, StringSplitOptions.RemoveEmptyEntries)
.Select(i => "(" + i).ToList();
就像是:
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();
您可以使用正则表达式及其Split
方法来获取零件数组。
var s = "(11)123456(14)abc123(18)gt567";
var pattern = new Regex(@"(\([^\(]+)");
var components = pattern.Split(s)
该模式匹配左括号后跟任意数量的字符,直到下一个左括号。
如果您需要处理诸如换行之类的空白,您可能需要稍微调整模式或 RegexOptions。