Могу ли я определить Perl-подобный оператор привязки (= ~) в C #? - PullRequest
1 голос
/ 07 февраля 2009

Мне очень нравится возможность использовать = ~ и! ~ В Perl для вычисления строки по сравнению с регулярным выражением. Я хотел бы перенести эту функциональность на C #, но похоже, что, хотя вы можете перегружать операторы, вы не можете создавать новые.

Я подумываю о расширении строкового типа для предоставления метода Match (), который позволит мне передавать регулярное выражение для оценки, но мне интересно, есть ли лучший способ.

У кого-нибудь есть лучшее решение?

Ответы [ 2 ]

1 голос
/ 07 февраля 2009

Попробуйте создать метод расширения для строкового класса, который действует как ярлык для Regex.Match. Примерно так:

public static class RegexExtensions
{
    public static bool Match(this string text, Regex re)
    {
        return Regex.Match(text, re);
    }
}
0 голосов
/ 07 февраля 2009

По моему опыту .NET поддерживает те же функции, что и регулярные выражения Perl, но синтаксис гораздо более многословен, поэтому для его освоения требуется немного.

C # не поддерживает концепцию неявных переменных, поэтому вы всегда должны указывать как входную строку, так и шаблон соответствия. Другими словами, это короткий путь, который отсутствует в .NET, а не явное соответствие через = ~ и! ~.

Regex.Match делает то же самое, что и = ~, если вы просто хотите найти совпадения. Если вы хотите сопоставить и заменить, вы должны использовать метод Replace. Для оператора! ~ Вам просто нужно использовать! и соответствующий метод Regex.

Требуется немного больше печатать, но вы можете получить эффект, который вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...