Regex组合了多个函数



如何在代码中为一个字符串调用两个函数?

public static string ecleaner(string str)
  {
    return Regex.Replace(str, "[éèê]+", "e", RegexOptions.Compiled);
  }
public static string acleaner(string str)
  {
    return Regex.Replace(str, "[áàâ]+", "a", RegexOptions.Compiled);
  }

现在我想检查一下"Tésááést"这个词,在这之后它应该看起来像Teaest。

您可以使用MatchEvaluator委托,如下所示:

public static string cleaner(string str)
{
    return Regex.Replace(str, "(?<a>[áàâ]+)|(?<e>[éèê]+)", onMatch, RegexOptions.Compiled);
}
private static string onMatch(Match m)
{
    if (m.Groups["a"].Success)
        return "a";
    if (m.Groups["e"].Success)
        return "e";
    return "";
}

或者:

public static string cleaner(string str)
{
    var groups = new[] { "a", "e" };
    return Regex.Replace(str, "(?<a>[áàâ]+)|(?<e>[éèê]+)", m => groups.First(g => m.Groups[g].Success), RegexOptions.Compiled);
}

你试过这个吗?

string str = "Téèááést";
str = ecleaner(str);
str = acleaner(str);
    public static class StringExtensions
    {
        public static string ecleaner(this string str)
        {
            return Regex.Replace(str, "[éèê]+", "e", RegexOptions.Compiled);
        }
        public static string acleaner(this string str)
        {
           return Regex.Replace(str, "[áàâ]+", "a", RegexOptions.Compiled);
        }
    }
    //...
    var result = "Téèááést".ecleaner().acleaner();

您还可以将扩展方法类与@p.s.w.g的答案结合起来,使事情变得更加整洁。

最新更新