1

我真的很喜欢能够在 Perl 中使用 =~ 和 !~ 来根据正则表达式计算字符串。我想将此功能移植到 C#,但看起来,虽然您可以重载运算符,但您不能创建新的运算符。

我正在考虑扩展字符串类型以提供 Match() 方法,该方法允许我传递正则表达式以进行评估,但我想知道有更好的方法。

有人有更好的解决方案吗?

4

2 回答 2

2

尝试为作为 Regex.Match 的“快捷方式”的字符串类创建一个扩展方法。像这样的东西:

public static class RegexExtensions
{
    public static bool Match(this string text, Regex re)
    {
        return Regex.Match(text, re);
    }
}
于 2009-02-07T14:06:56.153 回答
0

根据我的经验,.NET 支持与 Perl 正则表达式相同的功能,但语法要冗长得多,因此需要一点时间来适应。

C# 不支持隐式变量的概念,因此您始终必须同时提供输入字符串和匹配模式。换句话说,.NET 中缺少的是捷径,而不是通过 =~ 和 !~ 进行的显式匹配。

如果您只想查找匹配项,Regex.Match 与 =~ 执行相同的操作。如果要匹配和替换,则必须使用 Replace 方法。对于 !~ 运算符,您只需使用 ! 和相关的正则表达式方法。

它需要更多的输入,但您可以获得您正在寻找的效果。

于 2009-02-07T07:50:47.147 回答