在正则表达式中苦苦挣扎。
我想要实现的是接受字符串并交换两位数,如果它们被" - "第一个比第二个大。
示例:
1,3,5,14-10, 15-20
应替换为:
1,3,5,10-14,15-20
非常感谢您的帮助,因为我只有字符串验证器:
"^(?!([ \\d]*-){2})\\d+(?: *[-,] *\\d+)*$"
不确定在这里实施我的提出的问题是什么(我的意思是 - 修改现有的问题或者在处理后进行处理)。
答案 0 :(得分:1)
您可以将Regex.Replace方法与MatchEvaluator实例一起用作第三个参数来调用返回替换字符串的函数。例如:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string sContent = "1,3,5,14-10,15-20";
MatchEvaluator evaluator = new MatchEvaluator(LowerThan);
Console.WriteLine(Regex.Replace(sContent, @"(\d+)-(\d+)", evaluator));
}
public static string LowerThan(Match match)
{
if (int.Parse(match.Groups[1].Value) > int.Parse(match.Groups[2].Value)) {
return match.Groups[2].Value + "-" + match.Groups[1].Value;
}
return match.Value;
}
}