Like 演算子 (LotusScript 言語)

文字列式がパターン文字列に一致するかどうかを調べます。

構文

stringExpr Like patternString

要素

stringExpr

任意の String 型の式。

patternString

個々の ASCII 文字、ワイルドカード文字、またはそれらの文字列の集合を入れることのできる文字列式です。1 つの patternString に複数のワイルドカード文字を使用できます。

ワイルドカード

一致

?

任意の 1 文字

#

ゼロから 9 までの 1 つの数字

*

ゼロ個以上の任意の文字列

[ characters ]

リストの characters、またはそこで指定した範囲の任意の 1 文字

[! characters ]

リストの characters、またはそこで指定した範囲に含まれない任意の 1 文字

リスト内の文字をマッチングする

リスト内の文字をマッチングするには、文字を [ ] で囲みます。このとき、空白文字をリストの一部とする場合以外は、空白やその他の区切り文字は入れません。例えば、[1, 2, 3, A, B, C] は、文字の 1、カンマ、空白、2、3、A、B、C を表します (重複する空白とカンマは無視されます)。一方、[123ABC] は、文字 1、2、3、A、B、C を表します (空白とカンマはありません)。

範囲内で文字をマッチングする

範囲を指定するには、[1-5] のようにハイフンで範囲の上限と下限を区切ります。範囲は常に照合順序の昇順で指定します (Z-A ではなく A-Z)。ソート順は、Option Compare の設定によって決まります。複数の範囲を指定する場合、範囲を何かで区切る必要はありません。例えば、[1-5A-C] は、1-5 の範囲と A-C の範囲を表します。

バイナリ比較 (Option Compare Binary) が有効なときは、国際 Unicode 文字照合順序が使用されます。これは、値 Uchr(0)、Uchr(1)、Uchr(2)、.... の順序です。どの LotusScript® のプラットフォームでも同じです。範囲を昇順で指定すると、有効なパターン文字列が生成されます。ただし、Option Compare の Case、NoCase、Pitch、または NoPitch が有効になっている場合、使用しているオペレーティングシステムによって照合順序は多少異なります。通常はどのような場合でも区切り文字などのあいまいな文字の範囲指定を避けることをお勧めします。保守容易性を高め、プラットフォームに依存しないようにするために、範囲を使用する代わりに突き合わせる文字 (「[:;<=>?]」など) を指定します。また、除外により範囲を定義できることにも注意してください。非英数字に一致させるには、すべての Unicode 非英数字をリストしようとする代わりに、「[!a-Z0-9]」(バイナリ以外のモードの場合) または「[!A-Za-z0-9]」(バイナリモードの場合) を使用します。

特殊文字をマッチングする

次の文字のいずれかとマッチングするには、それを characters リストに指定します。

ハイフンはリストの先頭に指定します。[!characters] の形式を使用しているときは、[!-123] のようにハイフンを感嘆符の直後に指定します。その他の文字は、characters リストのどの位置に指定しても構いません。例えば、Option Compare Binary (そのため、Unicode 照合順序) が有効な場合、[-?A-Z]はハイフン、疑問符、A から Z までのすべての英大文字に一致します。

次の文字のいずれかとマッチングするには、characters リストまたは範囲外のワイルドカード中の任意の位置に指定します。

例えば、!,[1-6] は、感嘆符、カンマ、1 から 6 までの数字に一致します。

戻り値

stringExprpatternString に一致すれば、結果は True です。一致しなければ、結果は False です。stringExprpatternString の一方が NULL ならば、結果は NULL です。

使用法

既定値では、大文字と小文字を区別して比較します。Option Compare ステートメントを使用して、大文字と小文字を区別するかどうかを指定できます。

クロスリファレンス

式言語の @Like 関数

式言語の @IsMember 関数

式言語の @Matches 関数

例 1

3 で終り 2 で始まらない、1 から 100 までの 2 桁の数字を表示します。

For x = 1 To 100
   If CStr(x) Like "[!2]3" Then Print x
Next x
' Output:
' 13 33 43 53 63 73 83 93 

例 2

この例では、Like 演算子を [city] と [zip] フィールドの値が正しいかどうかを確かめる式に使用しています。

if doc.city(0) like "*[0-9]*" then messagebox _
   "city field contains a number"
if doc.zip(0) like "*[a-z,A-Z]*" then messagebox _   
   "zip code field contains a character"

例 3

Like 演算子を使用して、指定された部分文字列がある文字列に含まれるかどうかテストする方法をいくつか示します。

' Make string comparison case-sensitive.
Option Compare Case
Dim anArray(1 To 6) As String
anArray(1) = "Juan"
anArray(2) = "Joan"
anArray(3) = "Alejandro"
anArray(4) = "Jonathan"
anArray(5) = "Andrea"
anArray(6) = "Jane"
UB% = UBound(anArray)

' Test each name in anArray$ to see if it contains a substring
' consisting of any characters followed by uppercase J
' followed by any characters followed by lowercase n followed
' by any characters.
For counter% = 1 to UB%
  If anArray(counter%) Like "*J*n*" Then
      Print anArray(counter%) & " " ;
  End If
Next
Print ""
' Output: Juan Joan Jonathan Jane

' Test each name in anArray$ to see if it contains
' a numeric character.
badRec% = 0
For counter% = 1 to UB%
  If anArray(counter%) Like "*#*" Then
      Print anArray(counter%) & " contains a numeral."
      badRec% = badRec% + 1
  End If
Next
If badRec% = 0 Then
  Print "No name contains a numeral."
End If
' Output: No name contains a numeral.

' Test the lowercase representation of each name in anArray$
' to see if it ends in a vowel.
For counter% = 1 to UB%
  If anArray(counter%) Like "*[aeiou]" Then
      Print anArray(counter%) & " " ;
  End If
Next
Print ""
' Output: Alejandro Andrea Jane