Main Content

string형 배열 생성하기

string형 배열은 텍스트 조각을 저장하고 텍스트를 데이터로 사용할 수 있는 일련의 함수를 제공합니다. 다른 유형의 배열을 활용하는 것과 마찬가지로, string형 배열을 형태 변경하고, 결합하고, 배열의 요소를 참조할 수 있습니다. 또한 문자열의 문자에 액세스하고 plus 연산자를 사용하여 문자열에 텍스트를 추가할 수 있습니다. string형 배열 내의 문자열을 재배열하려면 split, join, sort와 같은 함수를 사용하십시오.

변수에서 string형 배열 생성하기

MATLAB®은 텍스트 조각을 저장할 수 있는 string형 배열을 제공합니다. string형 배열의 각 요소에는 1×n 크기의 문자 시퀀스가 들어 있습니다.

큰따옴표를 사용하여 string형을 생성할 수 있습니다.

str = "Hello, world"
str = 
"Hello, world"

다른 방법으로, string 함수를 사용하여 문자형 벡터를 string형으로 변환할 수 있습니다. chr은 1×17 문자형 벡터입니다. str은 이 문자형 벡터와 동일한 텍스트를 가진 1×1 문자열입니다.

chr = 'Greetings, friend'
chr = 
'Greetings, friend'
str = string(chr)
str = 
"Greetings, friend"

[] 연산자를 사용하여 여러 개의 문자열을 포함하는 string형 배열을 만듭니다. str은 6개의 문자열을 포함하는 2×3 string형 배열입니다.

str = ["Mercury","Gemini","Apollo";
       "Skylab","Skylab B","ISS"]
str = 2x3 string
    "Mercury"    "Gemini"      "Apollo"
    "Skylab"     "Skylab B"    "ISS"   

strlength 함수를 사용하여 str의 각 문자열의 길이를 구합니다. 문자열에 포함된 문자 수를 확인하려면 length가 아니라 strlength를 사용해야 합니다.

L = strlength(str)
L = 2×3

     7     6     6
     6     8     3

다른 방법으로, string 함수를 사용하여 문자형 벡터로 구성된 셀형 배열을 string형 배열로 변환할 수 있습니다. MATLAB에서는 string형 배열의 문자열을 표시하는 데 큰따옴표를 사용하고, 셀형 배열의 문자형 벡터를 표시하는 데 작은따옴표를 사용합니다.

C = {'Mercury','Venus','Earth'}
C = 1x3 cell
    {'Mercury'}    {'Venus'}    {'Earth'}

str = string(C)
str = 1x3 string
    "Mercury"    "Venus"    "Earth"

string 함수를 사용하면 문자형 벡터는 물론 숫자형 값, datetime형 값, duration형 값, categorical형 값을 문자열로 변환할 수 있습니다.

숫자형 배열을 string형 배열로 변환합니다.

X = [5 10 20 3.1416];
string(X)
ans = 1x4 string
    "5"    "10"    "20"    "3.1416"

datetime형 값을 문자열로 변환합니다.

d = datetime('now');
string(d)
ans = 
"25-Jan-2024 22:12:28"

또한 readtable, textscan, fscanf 함수를 사용하여 파일에서 string형 배열로 텍스트를 읽어 올 수 있습니다.

빈 string형과 누락값인 string형 생성하기

string형 배열에는 빈 값과 누락값이 모두 포함될 수 있습니다. 빈 문자열에는 0개의 문자가 있습니다. 빈 문자열을 표시할 경우, 큰따옴표 쌍이 중간에 아무것도 없이 반환됩니다(""). 누락값인 string형은 숫자형 배열에서의 NaN과 같습니다. 이는 문자열은 string형 배열에 누락값이 있음을 나타냅니다. 누락값인 string형을 표시할 경우, <missing>과 같이 따옴표 없이 반환됩니다.

strings 함수를 사용하여 빈 string형 배열을 생성합니다. strings를 인수 없이 호출하면 빈 문자열이 반환됩니다. 참고로, str의 크기는 0×0이 아니라 1×1입니다. 그러나 str에는 0개 문자가 있습니다.

str = strings
str = 
""

작은따옴표를 사용하여 빈 문자형 벡터를 생성합니다. 참고로, chr의 크기는 0×0입니다.

chr = ''
chr =

  0x0 empty char array

모든 요소가 빈 문자열인 string형 배열을 생성합니다. strings 함수를 사용하여 string형 배열을 사전할당할 수 있습니다.

str = strings(2,3)
str = 2x3 string
    ""    ""    ""
    ""    ""    ""

누락값인 string형을 생성하려면 string 함수를 사용하여 누락값을 변환하십시오. 누락값인 string형이 <missing>으로 표시됩니다.

str = string(missing)
str = 
<missing>

빈 string형과 누락값인 string형이 모두 있는 string형 배열을 생성할 수 있습니다. ismissing 함수를 사용하여 누락값이 있는 문자열에 해당하는 요소를 확인합니다. 참고로, 빈 string형은 누락값인 string형이 아닙니다.

str(1) = "";
str(2) = "Gemini";
str(3) = string(missing)
str = 1x3 string
    ""    "Gemini"    <missing>

ismissing(str)
ans = 1x3 logical array

   0   0   1

누락값인 string형을 다른 문자열과 비교합니다. 누락값인 string형을 누락값인 string형과 비교하는 경우에도 결과는 항상 0(false)입니다.

str = string(missing);
str == "Gemini"
ans = logical
   0

str == string(missing)
ans = logical
   0

string형 배열의 요소에 액세스하기

string형 배열은 인덱싱과 형태 변경 같은 배열 연산을 지원합니다. 배열 인덱싱을 사용하여 str의 첫 번째 행과 모든 열에 액세스합니다.

str = ["Mercury","Gemini","Apollo";
       "Skylab","Skylab B","ISS"];
str(1,:)
ans = 1x3 string
    "Mercury"    "Gemini"    "Apollo"

str의 두 번째 행에 있는 두 번째 요소에 액세스합니다.

str(2,2)
ans = 
"Skylab B"

str의 경계 바깥에 새 문자열을 할당합니다. MATLAB은 배열을 확장하고 값이 할당되지 않은 요소를 누락값으로 채웁니다.

str(3,4) = "Mir"
str = 3x4 string
    "Mercury"    "Gemini"      "Apollo"     <missing>
    "Skylab"     "Skylab B"    "ISS"        <missing>
    <missing>    <missing>     <missing>    "Mir"    

string형 내의 문자에 액세스하기

중괄호 {}를 사용하여 string형 배열의 요소를 참조해 문자에 직접 액세스할 수 있습니다. string형의 요소 내의 문자에 액세스하여 수정해야 하는 경우 중괄호를 사용하십시오. 중괄호를 사용하여 인덱싱하면 string형 배열이나 문자형 벡터로 구성된 셀형 배열에 사용할 수 있는 코드에 대한 호환성이 제공됩니다. 그러나 가능하다면, string형 내의 문자를 다룰 때는 항상 string 함수를 사용하십시오.

중괄호를 사용하여 두 번째 행에 있는 두 번째 요소에 액세스합니다. chr은 string형이 아니라 문자형 벡터입니다.

str = ["Mercury","Gemini","Apollo";
       "Skylab","Skylab B","ISS"];
chr = str{2,2}
chr = 
'Skylab B'

문자형 벡터에 액세스하고 처음 세 개의 문자를 반환합니다.

str{2,2}(1:3)
ans = 
'Sky'

문자열에서 공백 문자를 찾아 대시로 바꿉니다. isspace 함수를 사용하여 문자열 내의 개별 문자를 검사합니다. isspace는 공백 문자가 있는 위치에 true 값이 포함된 논리형 벡터를 반환합니다. 마지막으로, 수정된 문자열 요소 str(2,2)를 표시합니다.

TF = isspace(str{2,2})
TF = 1x8 logical array

   0   0   0   0   0   0   1   0

str{2,2}(TF) = "-";
str(2,2)
ans = 
"Skylab-B"

참고로 이 경우, 중괄호 인덱싱에 의지하지 않고 replace 함수를 사용하여 공백을 대체할 수도 있습니다.

replace(str(2,2)," ","-")
ans = 
"Skylab-B"

문자열을 string형 배열에 결합하기

다른 유형의 배열을 결합할 때와 마찬가지로 문자열을 string형 배열로 결합합니다.

대괄호 []를 사용하여 두 개의 string형 배열을 결합합니다.

str1 = ["Mercury","Gemini","Apollo"];
str2 = ["Skylab","Skylab B","ISS"];
str = [str1 str2]
str = 1x6 string
    "Mercury"    "Gemini"    "Apollo"    "Skylab"    "Skylab B"    "ISS"

str1str2를 전치합니다. 두 string형을 결합한 다음 열 제목을 string형 배열에 세로로 결합합니다. 문자형 벡터를 string형 배열로 결합하면 문자형 벡터가 자동으로 문자열로 변환됩니다.

str1 = str1';
str2 = str2';
str = [str1 str2];
str = [["Mission:","Station:"] ; str]
str = 4x2 string
    "Mission:"    "Station:"
    "Mercury"     "Skylab"  
    "Gemini"      "Skylab B"
    "Apollo"      "ISS"     

문자열에 텍스트 추가하기

문자열에 텍스트를 추가하려면 plus 연산자 +를 사용하십시오. plus 연산자는 문자열에 텍스트를 추가하지만 string형 배열의 크기를 변경하지는 않습니다.

이름으로 구성된 배열에 성을 추가합니다. 문자열에 문자형 벡터를 추가하는 경우 문자형 벡터가 자동으로 문자열로 변환됩니다.

names = ["Mary";"John";"Elizabeth";"Paul";"Ann"];
names = names + ' Smith'
names = 5x1 string
    "Mary Smith"
    "John Smith"
    "Elizabeth Smith"
    "Paul Smith"
    "Ann Smith"

여러 성을 추가합니다. string형 배열, 또는 문자형 벡터로 구성된 셀형 배열의 텍스트를 string형 배열에 추가할 수 있습니다. 비 스칼라 배열을 추가할 경우 추가하는 배열의 크기가 같아야 합니다.

names = ["Mary";"John";"Elizabeth";"Paul";"Ann"];
lastnames = ["Jones";"Adams";"Young";"Burns";"Spencer"];
names = names + " " + lastnames
names = 5x1 string
    "Mary Jones"
    "John Adams"
    "Elizabeth Young"
    "Paul Burns"
    "Ann Spencer"

누락값인 string형을 추가합니다. 플러스 연산자를 사용하여 누락값인 string형을 추가할 경우 누락값인 string형이 출력됩니다.

str1 = "Jones";
str2 = string(missing);
str1 + str2
ans = 
<missing>

string형 배열을 분할, 결합(Join), 정렬하기

MATLAB에서는 string형 배열에 사용할 수 있는 일련의 함수를 제공합니다. 예를 들어, split, join, sort 함수를 사용하여 이름이 성을 기준으로 사전순으로 나열되도록 string형 배열 names를 재배열할 수 있습니다.

공백 문자에서 names를 분할합니다. 분할을 수행하면 names가 5×1 string형 배열에서 5×2 배열로 변경됩니다.

names = ["Mary Jones";"John Adams";"Elizabeth Young";"Paul Burns";"Ann Spencer"];
names = split(names)
names = 5x2 string
    "Mary"         "Jones"  
    "John"         "Adams"  
    "Elizabeth"    "Young"  
    "Paul"         "Burns"  
    "Ann"          "Spencer"

성이 첫 번째 열에 오도록 names의 열을 전환합니다. 각각의 성 뒤에 쉼표를 추가합니다.

names = [names(:,2) names(:,1)];
names(:,1) = names(:,1) + ','
names = 5x2 string
    "Jones,"      "Mary"     
    "Adams,"      "John"     
    "Young,"      "Elizabeth"
    "Burns,"      "Paul"     
    "Spencer,"    "Ann"      

성과 이름을 결합합니다. join 함수는 결합되는 문자열 사이에 공백 문자를 표시합니다. 결합 후 names는 5×1 string형 배열이 됩니다.

names = join(names)
names = 5x1 string
    "Jones, Mary"
    "Adams, John"
    "Young, Elizabeth"
    "Burns, Paul"
    "Spencer, Ann"

사전순으로 나열되도록 names의 요소를 정렬합니다.

names = sort(names)
names = 5x1 string
    "Adams, John"
    "Burns, Paul"
    "Jones, Mary"
    "Spencer, Ann"
    "Young, Elizabeth"

참고 항목

| | | | | | | |

관련 항목