Использование методов расширения строк для проверки номеров социального обеспечения в C#

В этом примере определяются три метода расширения, возвращающих true, если строки содержат номера социального обеспечения.

Вспомните, что вы должны добавлять методы расширения к статическому классу и что методы должны быть статическими. Этот пример начинается с определения метода расширения строки Matches, чтобы определить, соответствует ли строка регулярному выражению.

using System.Text.RegularExpressions;
...
public static bool Matches(this string value, string expression)
{
    return Regex.IsMatch(value, expression);
}

Этот код просто вызывает статический метод IsMatch Regex класса, передающий ему строку и регулярное выражение. Этот метод возвращает true или false, чтобы указать, соответствует ли строка выражению. Метод расширения просто возвращает этот результат.

Как только вы определили метод Matches, легко сделать другие методы расширения, которые проверяют определенные форматы. Следующий код показывает, как этот пример проверяет номера социального обеспечения с тире или без тире или с любым форматом.

public static bool IsValidSsnWithDashes(this string value)
{
    return value.Matches(@"^\d{3}-\d{2}-\d{4}$");
}

public static bool IsValidSsnWithoutDashes(this string value)
{
    return Regex.IsMatch(value, @"^\d{9}$");
}

public static bool IsValidSsn(this string value)
{
    return value.Matches(@"^(?:\d{9}|\d{3}-\d{2}-\d{4})$");
}

Эти методы отличаются только регулярными выражениями, которые они используют. Первый метод IsValidSsnWithDashes использует шаблон @ "^ \ d {3} - \ d {2} - \ d {4} $", чтобы сопоставить номера социального страхования формы ddd -dd-dddd, где d - любая цифра. Обратите внимание на то, как код использует символ @ для создания строкового литерала, поэтому обратные косые черты не обрабатываются как специальные символы в строке.

Начальный ^ соответствует началу строки. Ток \ d означает «любая цифра». {3} означает повторение предыдущего символа \ d 3 раза, поэтому первая часть выражение соответствует 3 цифрам в начале строки. Тире - рассматривается как буквальный символ, поэтому строка должна содержать тире. Затем выражение использует \ d и спецификаторы счетчика, чтобы соответствовать двум цифрам, тире и 4 цифрам. Окончательный $ соответствует концу строки.

Второй метод IsValidSsnWithoutDashes использует шаблон @ "^ \ d {9} $", чтобы сопоставить номера социального обеспечения формы ddddddddd. Это регулярное выражение просто соответствует 9 цифрам.

Третий метод IsValidSsn соответствует номерам социального обеспечения с тире или без них. Его регулярное выражение включает в себя два предыдущих регулярных выражения, разделенных вертикальной полосой |, которая указывает, что любой из шаблонов может составить совпадение.

С помощью этих методов расширения основная программа может легко проверить номера социального страхования. В основной форме используются обработчики событий TextChanged, чтобы дать каждому TextBox желтый фон, если он не содержит данных в соответствующем формате. Следующий код показывает, как TextBox позволяет использовать любой формат.

private void txtEither_TextChanged(object sender, EventArgs e)
{
    if (txtEither.Text.IsValidSsn())
        txtEither.BackColor = SystemColors.Window;
    else
        txtEither.BackColor = Color.Yellow;
}

Источник: http://csharphelper.com/blog/2017/06/use-string-extension-methods-to-validate-social-security-numbers-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector