Like 연산자(Visual Basic)
업데이트: 2007년 11월
문자열을 패턴과 비교합니다.
result = string Like pattern
구성 요소
result
필수적 요소. Boolean 형식의 임의 변수입니다. 결과는 string이 pattern을 충족하는지 여부를 나타내는 Boolean 값입니다.string
필수적 요소. 임의의 String 식입니다.pattern
필수적 요소. "설명" 부분에서 명시한 패턴 일치 규칙에 맞는 임의의 String 식입니다.
설명
string의 값이 pattern에 포함된 패턴을 충족할 경우 result는 True입니다. 문자열이 패턴을 충족하지 않을 경우 result는 False입니다. string과 pattern이 모두 빈 문자열이면 결과는 True가 됩니다.
비교 메서드
Like 연산자의 동작은 Option Compare 문에 따라 달라집니다. 각 원본 파일에 대한 기본 문자열 비교 메서드는 Option Compare Binary입니다.
패턴 옵션
기본 제공 패턴 일치 기능을 사용하면 여러 가지 방법으로 문자열을 비교할 수 있습니다. 패턴 일치 기능을 사용하면 특정 문자, 와일드카드 문자, 문자 목록, 문자 범위 등에 대해 string의 각 문자를 일치시킬 수 있습니다. 다음 표에서는 pattern에 사용할 수 있는 문자와 해당 문자와 일치하는 대상을 보여 줍니다.
pattern의 문자 |
string의 일치 대상 |
---|---|
? |
임의의 단일 문자 |
* |
0개 이상의 문자 |
# |
임의의 단일 숫자(0–9) |
[charlist] |
charlist에 있는 임의의 단일 문자 |
[!charlist] |
charlist에 없는 임의의 단일 문자 |
문자 목록
하나 이상의 문자를 대괄호([ ])로 묶은 문자 그룹(charlist)은 string에 있는 임의의 단일 문자와 일치시키는 데 사용될 수 있으며, 숫자뿐만 아니라 거의 모든 문자 코드를 포함할 수 있습니다.
charlist의 시작 부분에 있는 느낌표(!)는 charlist에 있는 문자를 제외한 문자가 string에 있으면 해당 문자를 찾습니다. 대괄호 외부에서 느낌표를 사용하면 느낌표 자체를 찾습니다.
특수 문자
왼쪽 대괄호([), 물음표(?), 숫자 표시(#), 별표(*) 등과 같은 특수 문자와 일치시키려면 해당 문자를 대괄호로 묶습니다. 그룹 내에 오른쪽 대괄호(])를 사용하여 자신과 일치하는 문자를 찾을 수는 없지만 그룹 외부에서는 개별 문자로 사용할 수 있습니다.
문자 시퀀스 []는 길이가 0인 문자열("")로 간주됩니다. 그러나 대괄호로 묶은 문자 목록의 일부가 될 수는 없습니다. string의 특정 위치에 문자 그룹 중 하나가 포함되어 있거나 문자가 전혀 포함되지 않았는지 확인하려면 Like를 두 번 사용합니다. 이에 대한 예제를 보려면 방법: 패턴에 대해 문자열 비교를 참조하십시오.
문자 범위
범위의 상한과 하한을 구분하는 하이픈(–)을 사용하여 charlist에서 문자의 범위를 지정할 수 있습니다. 예를 들어, string의 해당 문자 위치에 A에서 Z 사이의 임의 문자가 있으면 [A–Z]를 사용하여 찾고 해당 문자 위치에 H에서 L 사이를 벗어나는 임의 문자가 있으면 [!H–L]를 사용하여 찾습니다.
문자의 범위를 지정하면 문자는 오름차순(A - Z)으로 표시되어야 합니다. 따라서 [A–Z]는 유효한 패턴이지만 [Z–A]는 유효하지 않습니다.
여러 문자 범위
동일한 문자 위치에 대해 여러 범위를 지정하려면 구분 기호 없이 대괄호 내에 추가합니다. 예를 들어, string의 해당 문자 위치에 A에서 C 사이 또는 X에서 Z 사이의 임의 문자가 있으면 [A–CX–Z]를 사용하여 찾습니다.
하이픈 사용
하이픈(–) 자체를 찾으려면 하이픈을 charlist의 시작 부분(느낌표가 사용되는 경우 그 다음)이나 끝 부분에 사용합니다. 하이픈을 다른 위치에 사용하면 하이픈 양쪽에 있는 문자의 범위를 나타냅니다.
데이터 정렬 순서
지정된 범위의 의미는 런타임에 문자 순서에 따라 달라집니다. 즉, OptionCompare와 코드가 실행되는 시스템의 로캘 설정에 의해 결정됩니다. OptionCompareBinary의 경우 범위 [A–E]는 A, B, C, D 및 E에 해당합니다. OptionCompareText의 경우 범위 [A–E]는 A, a, À, à, B, b, C, c, D, d, E 및 e에 해당합니다. 정렬 순서에 따라 악센트 부호가 있는 문자는 악센트 부호가 없는 문자 다음에 오므로 해당 범위에는 Ê 또는 ê가 포함되지 않습니다.
Digraph 문자
일부 언어에는 별도의 두 문자를 나타내는 영문자가 있습니다. 예를 들어, 일부 언어에서는 æ 문자를 사용하여 a와 e문자를 나타냅니다. Like 연산자는 이 digraph 문자 하나와 두 개의 개별 문자를 같은 것으로 인식합니다.
시스템 로캘 설정에 digraph 문자를 사용하는 언어가 지정되어 있는 경우, pattern 또는 string에 digraph 문자가 있으면 다른 문자열에서 이에 해당하는 두 문자 시퀀스를 찾습니다. 마찬가지로 pattern의 digraph 문자를 대괄호 내에 단독으로 사용하거나 목록 또는 범위에서 사용하는 경우, string에서 이에 해당하는 두 문자 시퀀스를 찾습니다.
오버로딩
Like 연산자는 필요에 따라 오버로드할 수 있습니다. 즉, 피연산자의 형식이 특정 클래스 또는 구조체인 경우 해당 클래스나 구조체에서 이 연산자의 동작을 다시 정의할 수 있습니다. 코드에서 이러한 클래스나 구조체에 대해 이 연산자를 사용할 때는 다시 정의된 동작을 알고 있어야 합니다. 자세한 내용은 연산자 프로시저를 참조하십시오.
예제
다음 예제에서는 Like 연산자를 사용하여 문자열과 다양한 패턴을 비교합니다. 결과는 각 문자열이 패턴을 충족하는지 나타내는 Boolean 변수입니다.
Dim testCheck As Boolean
' The following statement returns True (does "F" satisfy "F"?)
testCheck = "F" Like "F"
' The following statement returns False for Option Compare Binary
' and True for Option Compare Text (does "F" satisfy "f"?)
testCheck = "F" Like "f"
' The following statement returns False (does "F" satisfy "FFF"?)
testCheck = "F" Like "FFF"
' The following statement returns True (does "aBBBa" have an "a" at the
' beginning, an "a" at the end, and any number of characters in
' between?)
testCheck = "aBBBa" Like "a*a"
' The following statement returns True (does "F" occur in the set of
' characters from "A" through "Z"?)
testCheck = "F" Like "[A-Z]"
' The following statement returns False (does "F" NOT occur in the
' set of characters from "A" through "Z"?)
testCheck = "F" Like "[!A-Z]"
' The following statement returns True (does "a2a" begin and end with
' an "a" and have any single-digit number in between?)
testCheck = "a2a" Like "a#a"
' The following statement returns True (does "aM5b" begin with an "a",
' followed by any character from the set "L" through "P", followed
' by any single-digit number, and end with any character NOT in
' the character set "c" through "e"?)
testCheck = "aM5b" Like "a[L-P]#[!c-e]"
' The following statement returns True (does "BAT123khg" begin with a
' "B", followed by any single character, followed by a "T", and end
' with zero or more characters of any type?)
testCheck = "BAT123khg" Like "B?T*"
' The following statement returns False (does "CAT123khg"?) begin with
' a "B", followed by any single character, followed by a "T", and
' end with zero or more characters of any type?)
testCheck = "CAT123khg" Like "B?T*"