2009-02-07 59 views
1

我真的很喜欢能够在Perl中使用=〜和!〜来根据正则表达式计算字符串。我想把这个功能移植到C#上,但是看起来,虽然你可以重载操作符,但是你不能创建新的操作符。我可以在C#中定义一个类Perl的绑定运算符(=〜)吗?

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

任何人都有更好的解决方案?

回答

1

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

public static class RegexExtensions 
{ 
    public static bool Match(this string text, Regex re) 
    { 
     return Regex.Match(text, re); 
    } 
} 
+0

是的,这是我的想法。我真的很想拥有创建新操作员的能力,也许我们会在下一个.Net版本中看到这个功能。 – 2009-02-10 16:55:54

0

根据我的经验,.NET支持与Perl正则表达式相同的功能,但语法更加冗长,所以需要一点时间才能使用。

C#不支持隐式变量的概念,所以你总是必须提供输入字符串和匹配模式。换句话说,它是从.NET中缺少的捷径,而不是通过=〜和!〜的显式匹配。

如果您只是想查找匹配项,则Regex.Match会执行与〜相同的操作。如果你想匹配和替换,你必须使用替换方法。对于!〜操作符,您只需使用!和相关的Regex方法。

它需要多一点打字,但你可以得到你正在寻找的效果。

相关问题