Поделиться через


Практическое руководство. Сопоставление строки с шаблоном (Visual Basic)

Если вы хотите узнать, соответствует ли выражение типа строковых данных шаблону, можно использовать оператор Like.

Like принимает два операнда. Левый операнд представляет собой строковое выражение, а правый операнд — это строка, содержащая шаблон, используемый для сопоставления. Like Boolean возвращает значение, указывающее, соответствует ли строковое выражение шаблону.

Можно сопоставить каждый символ в строковом выражении с определенным символом, подстановочным знаком, списком символов или диапазоном символов. Позиции спецификаций в строке шаблона соответствуют позициям символов, которые должны быть сопоставлены в строковом выражении.

Сопоставление символа в строковом выражении с определенным символом

Поместите конкретный символ непосредственно в строку шаблона. Некоторые специальные символы должны быть заключены в квадратные скобки ([ ]). Дополнительные сведения см. в разделе "Оператор Like".

В следующем примере проверяется, состоит ли myString точно из одного символа H.

Dim sMatch As Boolean = myString Like "H"

Сопоставление символа в строковом выражении с подстановочным знаком

Поместите вопросительный знак (?) в строку шаблона. Любой допустимый символ в этой позиции приводит к успешному совпадению.

В следующем примере проверяется, состоит ли myString из одного символа W, за которым следуют ровно два символа любых значений.

Dim sMatch As Boolean = myString Like "W??"

Сопоставление символа в строковом выражении со списком символов

Поместите скобки ([ ]) в строку шаблона и внутри квадратных скобок поместите список символов. Не разделяйте символы запятыми или любым другим разделителем. Любой отдельный символ в списке образует успешное совпадение.

В следующем примере проверяется, состоит ли myString из любого допустимого символа, за которым следует ровно один из символов A, C, или E.

Dim sMatch As Boolean = myString Like "?[ACE]"

Обратите внимание, что это сопоставление учитывает регистр.

Сопоставление символа в строковом выражении с диапазоном символов

Поместите квадратные скобки ([ ]) в строку шаблона и внутри квадратных скобок помещают самые низкие и самые высокие символы в диапазоне, разделенные дефисом (). Любой отдельный символ в диапазоне является успешным совпадением.

В следующем примере проверяется, состоит ли myString из символов num, за которыми следует ровно один из символов i, j, k, l, m или n.

Dim sMatch As Boolean = myString Like "num[i-m]"

Обратите внимание, что это сопоставление учитывает регистр.

Сопоставление пустых строк

Like обрабатывает последовательность [] как строку нулевой длины (""). Можно использовать [] для проверки того, является ли целое строковое выражение пустым, но его нельзя использовать для проверки, является ли определенное положение в строковом выражении пустым. Если пустая позиция является одним из вариантов, которые необходимо протестировать, можно использовать Like несколько раз.

Сопоставление символа в строковом выражении со списком символов или без символов

  1. Вызовите оператор Like дважды для одного строкового выражения и свяжите два вызова при помощи Or Operator или OrElse Operator.

  2. В строке шаблона для первого Like предложения добавьте список символов, заключенный в квадратные скобки ([ ]).

  3. В строке шаблона для второго Like предложения не помещайте какой-либо символ в указанную позицию.

    В следующем примере проверяется семизначный телефонный номер phoneNum для ровно трёх цифровых символов, за которым следует пробел, дефис (), точка (.) или отсутствие символа, за которым следует ровно четыре цифровых символа.

    Dim sMatch As Boolean = 
      (phoneNum Like "###[ -.]####") OrElse (phoneNum Like "#######")
    

См. также