我真的很喜欢能够在 Perl 中使用 =~ 和 !~ 来根据正则表达式计算字符串。我想将此功能移植到 C#,但看起来,虽然您可以重载运算符,但您不能创建新的运算符。
我正在考虑扩展字符串类型以提供 Match() 方法,该方法允许我传递正则表达式以进行评估,但我想知道有更好的方法。
有人有更好的解决方案吗?
我真的很喜欢能够在 Perl 中使用 =~ 和 !~ 来根据正则表达式计算字符串。我想将此功能移植到 C#,但看起来,虽然您可以重载运算符,但您不能创建新的运算符。
我正在考虑扩展字符串类型以提供 Match() 方法,该方法允许我传递正则表达式以进行评估,但我想知道有更好的方法。
有人有更好的解决方案吗?
尝试为作为 Regex.Match 的“快捷方式”的字符串类创建一个扩展方法。像这样的东西:
public static class RegexExtensions
{
public static bool Match(this string text, Regex re)
{
return Regex.Match(text, re);
}
}
根据我的经验,.NET 支持与 Perl 正则表达式相同的功能,但语法要冗长得多,因此需要一点时间来适应。
C# 不支持隐式变量的概念,因此您始终必须同时提供输入字符串和匹配模式。换句话说,.NET 中缺少的是捷径,而不是通过 =~ 和 !~ 进行的显式匹配。
如果您只想查找匹配项,Regex.Match 与 =~ 执行相同的操作。如果要匹配和替换,则必须使用 Replace 方法。对于 !~ 运算符,您只需使用 ! 和相关的正则表达式方法。
它需要更多的输入,但您可以获得您正在寻找的效果。