Main Content

텍스트 비교

문자형 배열과 string형 배열의 텍스트를 여러 가지 방법으로 비교합니다. 관계 연산자와 strcmp 함수를 사용하여 string형 배열과 문자형 벡터를 비교할 수 있습니다. 다른 유형의 배열을 정렬할 때와 마찬가지로 sort 함수를 사용하여 string형 배열을 정렬할 수 있습니다. MATLAB®은 텍스트 조각의 문자를 검사할 수 있는 함수도 제공합니다. 예를 들어, 문자형 벡터나 string형 배열에서 영문자 또는 공백 문자인 문자를 파악할 수 있습니다.

string형 배열이 서로 동일한지 비교하기

관계 연산자 ==~=를 사용하여 string형 배열이 서로 동일한지 비교할 수 있습니다. string형 배열을 비교하면 출력값은 관계가 true인 경우 1을 포함하고, true가 아닌 경우 0을 포함하는 논리형 배열이 됩니다.

string형 스칼라를 두 개 만듭니다. 큰따옴표를 사용하여 string형을 생성할 수 있습니다.

str1 = "Hello";
str2 = "World";
str1,str2
str1 = 
"Hello"
str2 = 
"World"

str1str2가 동일한지 비교합니다.

str1 == str2
ans = logical
   0

여러 요소를 가진 string형 배열과 string형 스칼라를 비교합니다.

str1 = ["Mercury","Gemini","Apollo";...
        "Skylab","Skylab B","International Space Station"];
str2 = "Apollo";
str1 == str2
ans = 2x3 logical array

   0   0   1
   0   0   0

string형 배열과 문자형 벡터를 비교합니다. 변수 중 하나가 string형 배열이라면 비교를 수행할 수 있습니다.

chr = 'Gemini';
TF = (str1 == chr)
TF = 2x3 logical array

   0   1   0
   0   0   0

TF를 사용하여 str1의 요소를 참조해 Gemini와 일치하는 문자열 요소를 추출합니다. 논리형 배열을 사용하여 배열의 요소를 참조할 수 있습니다.

str1(TF)
ans = 
"Gemini"

~= 연산자를 사용하여 동일하지 않은지 비교합니다. str1의 요소를 참조하여 'Gemini'와 일치하지 않는 요소를 추출합니다.

TF = (str1 ~= chr)
TF = 2x3 logical array

   1   0   1
   1   1   1

str1(TF)
ans = 5x1 string
    "Mercury"
    "Skylab"
    "Skylab B"
    "Apollo"
    "International Space Station"

두 개의 비 스칼라 string형 배열을 비교합니다. 두 개의 비 스칼라 배열을 비교할 경우 두 배열의 크기가 동일해야 합니다.

str2 = ["Mercury","Mars","Apollo";...
        "Jupiter","Saturn","Neptune"];
TF = (str1 == str2)
TF = 2x3 logical array

   1   0   1
   0   0   0

str1의 요소를 참조하여 일치하는 요소를 추출합니다.

str1(TF)
ans = 2x1 string
    "Mercury"
    "Apollo"

다른 관계 연산자를 사용하여 string형 배열 비교하기

관계 연산자 >, >=, <, <=을 사용하여 문자열을 비교할 수도 있습니다. 대문자로 시작하는 문자열이 소문자로 시작하는 문자열 앞에 옵니다. 예를 들어, 문자열 "ABC""abc"보다 작습니다. 숫자와 일부 문장 부호도 문자 앞에 옵니다.

"ABC" < "abc"
ans = logical
   1

> 연산자를 사용하여 이름을 포함하는 string형 배열과 다른 이름을 비교합니다. 이름 Sanchez, de Ponte, NashS, d, N이 모두 M보다 크므로 Matthews 뒤에 옵니다.

str = ["Sanchez","Jones","de Ponte","Crosby","Nash"]; 
TF = (str > "Matthews")
TF = 1x5 logical array

   1   0   1   0   1

str(TF)
ans = 1x3 string
    "Sanchez"    "de Ponte"    "Nash"

string형 배열 정렬하기

string형 배열을 정렬할 수 있습니다. MATLAB®은 UTF-16 문자 인코딩 체계를 사용하여 문자를 Unicode®로 저장합니다. 문자형 배열과 string형 배열은 UTF-16 코드 포인트 순서에 따라 정렬됩니다. ASCII 문자에도 해당되는 문자의 경우 이 순서에 따라 대문자가 소문자 앞에 옵니다. 숫자와 일부 문장 부호도 문자 앞에 옵니다.

string형 배열 str을 정렬합니다.

sort(str)
ans = 1x5 string
    "Crosby"    "Jones"    "Nash"    "Sanchez"    "de Ponte"

2×3 string형 배열을 정렬합니다. sort 함수는 각 열의 요소를 개별적으로 정렬합니다.

sort(str2)
ans = 2x3 string
    "Jupiter"    "Mars"      "Apollo" 
    "Mercury"    "Saturn"    "Neptune"

각 행의 요소를 정렬하려면 두 번째 차원을 따라 str2를 정렬하십시오.

sort(str2,2)
ans = 2x3 string
    "Apollo"     "Mars"       "Mercury"
    "Jupiter"    "Neptune"    "Saturn" 

문자형 벡터 비교하기

문자형 벡터와 문자형 벡터로 구성된 셀형 배열을 서로 비교할 수 있습니다. strcmp 함수를 사용하여 두 개의 문자형 벡터를 비교하거나 strncmp를 사용하여 처음 N개 문자를 비교합니다. strcmpistrncmpi를 사용하여 대/소문자 구분 없이 비교를 수행할 수 있습니다.

strcmp 함수를 사용하여 두 개의 문자형 벡터를 비교해 보겠습니다. 이 예제에서 chr1chr2는 같지 않습니다.

chr1 = 'hello';
chr2 = 'help';
TF = strcmp(chr1,chr2)
TF = logical
   0

참고로, MATLAB strcmp는 C 버전의 strcmp와 다릅니다. C 버전의 strcmp는 두 개의 문자형 배열이 같을 경우 0을 반환하고, 다를 경우 0이 아닌 값을 반환합니다.

strncmp 함수를 사용하여 처음 두 개 문자를 비교합니다. 두 문자형 벡터가 모두 문자 he로 시작하므로 TF1입니다.

TF = strncmp(chr1,chr2,2)
TF = logical
   1

문자형 벡터로 구성된 두 개의 셀형 배열을 비교합니다. strcmp는 셀형 배열과 크기가 동일한 논리형 배열을 반환합니다.

C1 = {'pizza'; 'chips'; 'candy'};
C2 = {'pizza'; 'chocolate'; 'pretzels'};
strcmp(C1,C2)
ans = 3x1 logical array

   1
   0
   0

string형 배열과 문자형 배열 내에 포함된 문자 검사하기

isstrprop, isletter, isspace 함수를 사용하여 string형 배열 또는 문자형 배열 내에 포함된 문자를 검사할 수 있습니다.

  • isstrprop 함수는 string형 배열이나 문자형 배열에 포함된 문자를 검사합니다.

  • isletter 함수와 isspace 함수는 문자형 배열 내에 포함된 문자만 검사합니다.

문자형 벡터에서 공백 문자인 문자를 확인합니다. isspacechr과 크기가 동일한 논리형 벡터를 반환합니다.

chr = 'Four score and seven years ago';
TF = isspace(chr)
TF = 1x30 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진수 숫자, 문장 부호 문자인지 여부를 확인할 수 있습니다.

문자열에서 문장 부호인 문자를 확인합니다. isstrpropstr의 문자 수와 동일한 길이의 논리형 벡터를 반환합니다.

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"
isstrprop(str,"punct")
ans = 1x41 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 = 1x30 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

참고 항목

| | | | | | | | | |

관련 항목