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 メソッドを使用する必要があります。!~ 演算子については、 ! を使用するだけです。および関連する正規表現メソッド。
もう少し入力が必要ですが、探している効果を得ることができます。