Skip to main content
 首页 » 编程设计

c#之正则表达式解析问题

2024年01月22日28cyq1162

我需要解析下面的字符串,并且想使用正则表达式,但可以找到正确的方法。

输入样本(标记分隔符是 ; 并且标记内部是任何 Char 即 M/W/D )

1W4;2W35;4M35;13W108 

预期产出
List<string> points = new List<string>() {"1W", "2W", "4M", "13W"}; 
List<int> intervals = new List<int>() {4, 35, 35, 108}; 

谢谢你的帮助。

请您参考如下方法:

您可以使用 string.Split 将字符串拆分为标记。然后使用正则表达式解析每个标记:

var exp = new Regex(@"^(?<point>\d+[a-zA-Z])(?<interval>\d+)$"); 
var str = "1W4;2W35;4M35;13W108"; 
var tokens = str.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries); 
foreach (var token in tokens) 
{ 
    var match = exp.Match(token); 
    if (match != null) 
    { 
        points.Add(match.Groups["point"].Value); 
        intervals.Add(int.Parse(match.Groups["interval"].Value)); 
    } 
}