2009-02-07 62 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方法。

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

相關問題