텍스트 비교
R2026bMATLAB®에는 string형 배열의 텍스트와 문자형 배열의 텍스트를 비교할 수 있는 몇 가지 방법이 있습니다. 예를 들어, 관계 연산자, matches 함수 또는 strcmp 함수를 사용할 수 있습니다. 다른 유형의 배열과 마찬가지로 sort 함수를 사용하여 string형 배열을 정렬할 수 있습니다. 또한 텍스트를 구성하는 개별 문자를 검사하여, 예를 들어 문자형 벡터 또는 string형 배열의 문자가 문자(letter)인지 공백 문자(space character)인지 확인할 수도 있습니다.
string형 배열이 서로 동일한지 비교하기
관계 연산자 ==와 ~=를 사용하여 string형 배열이 서로 동일한지 비교할 수 있습니다. 이러한 연산자는 대/소문자를 구분하는 비교를 수행하고, 관계가 true인 경우 1을 포함하고, true가 아닌 경우 0을 포함하는 논리형 배열을 반환합니다.
예를 들어, string형 스칼라를 두 개 만듭니다. 큰따옴표를 사용하여 string형을 생성할 수 있습니다.
str1 = "Hello"str1 = "Hello"
str2 = "World"str2 = "World"
str1과 str2가 동일한지 비교합니다.
str1 == str2
ans = logical
0
여러 요소를 가진 string형 배열과 string형 스칼라를 비교합니다.
str1 = ["Mercury","Gemini","Apollo"; ... "Skylab","Skylab B","International Space Station"]; str2 = "Apollo"; str1 == str2
ans = 2×3 logical array
0 0 1
0 0 0
string형 배열과 문자형 벡터를 비교합니다. 변수 중 하나가 string형 배열이라면 관계 연산자를 사용하여 비교를 수행할 수 있습니다.
chr = 'Gemini';
TF = (str1 == chr)TF = 2×3 logical array
0 1 0
0 0 0
논리형 배열을 사용하여 배열의 요소를 참조할 수 있습니다. 예를 들어 TF를 사용하여 str1의 요소를 참조해 'Gemini'와 일치하는 문자열 요소를 추출합니다.
str1(TF)
ans = "Gemini"
~= 연산자를 사용하여 동일하지 않은지 비교합니다.
TF = (str1 ~= chr)
TF = 2×3 logical array
1 0 1
1 1 1
str1의 요소를 참조하여 'Gemini'와 일치하지 않는 요소를 추출합니다.
str1(TF)
ans = 5×1 string
"Mercury"
"Skylab"
"Skylab B"
"Apollo"
"International Space Station"
두 개의 비 스칼라 string형 배열을 비교합니다. 관계 연산자를 사용하여 두 개의 비 스칼라 string형 배열을 비교할 경우 두 배열의 크기가 동일해야 합니다.
str2 = ["Mercury","Mars","Apollo"; ... "Jupiter","Saturn","Neptune"]; TF = (str1 == str2)
TF = 2×3 logical array
1 0 1
0 0 0
str1의 요소를 참조하여 서로 같은 요소를 추출합니다.
str1(TF)
ans = 2×1 string
"Mercury"
"Apollo"
string형 배열이 서로 일치하는지 비교하기
또는 matches 함수를 사용하여 string형 배열을 비교할 수 있습니다. 예를 들면 다음과 같습니다.
matches("Hello","World")
ans = logical
0
matches(["Mercury","Gemini","Apollo"],"Apollo")
ans = 1×3 logical array
0 0 1
두 개의 비 스칼라 string형 배열을 비교할 때 matches는 첫 번째 배열의 각 요소를 두 번째 배열의 모든 요소와 비교합니다. 따라서 matches에서는 두 개의 비 스칼라 배열의 크기가 동일하지 않아도 됩니다.
예를 들어 크기가 서로 다른 두 개의 비 스칼라 배열을 비교해 보겠습니다. matches 함수는 "Apollo" 또는 "Mercury"와 일치하는 str1의 요소를 찾습니다.
str1 = ["Mercury","Gemini","Apollo"; ... "Skylab","Skylab B","International Space Station"]; str2 = ["Apollo" "Mercury"]; matches(str1,str2)
ans = 2×3 logical array
1 0 1
0 0 0
matches를 사용하여 string형 배열을 특정 패턴과 일치시킬 수도 있습니다. 예를 들어, str1에서 영문자만 포함하는 string형 요소를 찾아보겠습니다.
pat = lettersPattern; matches(str1,pat)
ans = 2×3 logical array
1 1 1
1 0 0
matches 함수는 문자형 벡터와 문자형 벡터로 구성된 셀형 배열도 지원합니다.
다른 관계 연산자를 사용하여 string형 배열 비교하기
관계 연산자 >, >=, <, <=을 사용하여 문자열을 비교할 수도 있습니다. 대문자로 시작하는 문자열이 소문자로 시작하는 문자열 앞에 옵니다. 예를 들어, 문자열 "ABC"는 "abc"보다 작습니다. 숫자와 일부 문장 부호도 문자 앞에 옵니다.
"ABC" < "abc"
ans = logical
1
> 연산자를 사용하여 이름을 포함하는 string형 배열과 다른 이름을 비교합니다. 이름 Sanchez, de Ponte, Nash는 S, d, N이 모두 M보다 크므로 Matthews 뒤에 옵니다.
str = ["Sanchez","Jones","de Ponte","Crosby","Nash"]; TF = (str > "Matthews")
TF = 1×5 logical array
1 0 1 0 1
str(TF)
ans = 1×3 string
"Sanchez" "de Ponte" "Nash"
string형 배열 정렬하기
string형 배열을 정렬할 수 있습니다. MATLAB®은 UTF-16 문자 인코딩 체계를 사용하여 문자를 Unicode®로 저장합니다. 문자형 배열과 string형 배열은 UTF-16 코드 포인트 순서에 따라 정렬됩니다. ASCII 문자에도 해당되는 문자의 경우 이 순서에 따라 대문자가 소문자 앞에 옵니다. 숫자와 일부 문장 부호도 문자 앞에 옵니다.
string형 배열 str을 정렬합니다.
sort(str)
ans = 1×5 string
"Crosby" "Jones" "Nash" "Sanchez" "de Ponte"
2×3 string형 배열을 정렬합니다. sort 함수는 각 열의 요소를 개별적으로 정렬합니다.
sort(str1)
ans = 2×3 string
"Mercury" "Gemini" "Apollo"
"Skylab" "Skylab B" "International Space Station"
각 행의 요소를 정렬하려면 두 번째 차원을 따라 str1을 정렬하십시오.
sort(str1,2)
ans = 2×3 string
"Apollo" "Gemini" "Mercury"
"International Space Station" "Skylab" "Skylab B"
문자형 벡터 비교하기
strcmp 함수를 사용하여 문자형 벡터와 문자형 벡터로 구성된 셀형 배열을 비교할 수 있습니다. startsWith 함수를 사용하여 문자형 벡터가 특정 패턴으로 시작하는지 확인할 수 있습니다.
예를 들어, 두 개의 문자형 벡터를 비교해 보겠습니다.
chr1 = 'hello'; chr2 = 'he'; TF = strcmp(chr1,chr2)
TF = logical
0
참고로, MATLAB strcmp 함수는 C 버전의 strcmp와는 다릅니다. C 버전의 strcmp는 두 개의 문자형 배열이 같을 경우 0을 반환하고, 다를 경우 0이 아닌 값을 반환합니다.
chr1이 chr2의 문자로 시작하는지 확인합니다.
TF = startsWith(chr1,chr2)
TF = logical
1
startsWith 함수는 string형 배열도 지원합니다.
문자형 벡터로 구성된 두 개의 셀형 배열을 비교합니다. strcmp 함수는 요소별 비교를 수행하고, 셀형 배열과 크기가 동일한 논리형 배열을 반환합니다.
C1 = {'pizza'; 'chips'; 'candy'};
C2 = {'pizza'; 'chocolate'; 'pretzels'};
strcmp(C1,C2)ans = 3×1 logical array
1
0
0
strcmp 함수는 string형 배열도 지원합니다.
대/소문자를 무시하고 텍스트 비교하기
대/소문자를 구분하지 않는 비교에서는 strcmpi를 사용하거나 matches를 IgnoreCase 이름-값 인수와 함께 사용할 수 있습니다.
예를 들어, 대/소문자를 무시하고 문자형 벡터가 서로 같은지 비교해 보겠습니다.
chr1 = 'Hello'; chr2 = 'HELLO'; strcmpi(chr1,chr2)
ans = logical
1
matches(chr1,chr2,IgnoreCase=true)
ans = logical
1
대/소문자를 무시하고 두 개의 string형 배열을 비교합니다. strcmpi 함수는 요소별 비교를 수행합니다.
str1 = ["Hello" "Ciao" "Bonjour"]; str2 = ["HELLO" "BONJOUR" "HOLA"]; strcmpi(str1,str2)
ans = 1×3 logical array
1 0 0
IgnoreCase가 true로 설정된 matches 함수는 대/소문자를 무시하고 str1에서 str2의 요소와 일치하는 요소를 찾습니다.
matches(str1,str2,IgnoreCase=true)
ans = 1×3 logical array
1 0 1
string형 배열과 문자형 배열 내에 포함된 문자 검사하기
isstrprop, isletter, isspace 함수를 사용하여 string형 배열 또는 문자형 배열 내에 포함된 문자를 검사할 수 있습니다.
isstrprop함수는 string형 배열이나 문자형 배열에 포함된 문자를 검사합니다.isletter함수와isspace함수는 문자형 배열 내에 포함된 문자만 검사합니다.
문자형 벡터에서 공백 문자인 문자를 확인합니다. isspace는 chr과 크기가 동일한 논리형 벡터를 반환합니다.
chr = 'Four score and seven years ago';
TF = isspace(chr)TF = 1×30 logical array
0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
isstrprop 함수는 문자에서 여러 다양한 특성을 쿼리할 수 있습니다. isstrprop는 string형 또는 문자형 벡터에 포함된 문자가 영문자, 영숫자, 10진수 또는 16진수 숫자, 문장 부호 문자인지 여부를 확인할 수 있습니다.
문자열에서 문장 부호인 문자를 확인합니다. isstrprop는 str의 문자 수와 동일한 길이의 논리형 벡터를 반환합니다.
str = "A horse! A horse! My kingdom for a horse!"str = "A horse! A horse! My kingdom for a horse!"
isstrprop(str,"punct")ans = 1×41 logical array
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
문자형 벡터 chr에서 영문자인 문자를 확인합니다.
isstrprop(chr,"alpha")ans = 1×30 logical array
1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1
참고 항목
strcmp | matches | string | sort | isstrprop | isletter | isspace | eq | ne | gt | ge | le | lt | startsWith | strncmp | endsWith | contains