문자열 연결

문자열 연결 (Concatenating Strings)

문자열을 이어 붙이는 방법은 여러 가지가 있어요. 가장 자연스럽고 효율적인 방법은 행렬 표기법으로 연결하는 것이고, 상황에 따라 char, strvcat, strcat, cstrcat 같은 함수를 쓰는 것도 유용해요.

출처: 문서

본문

문자열은 행렬 표기법으로 연결할 수 있는데 (Strings, Character Arrays 참고), 이것이 보통 가장 자연스러운 방법이에요. 예를 들어,

fullname = [fname ".txt"];
email = ["<" user "@" domain ">"];

두 경우 모두 최종 문자열이 어떻게 생길지 쉽게 알 수 있어요. 이 방법이 가장 효율적이기도 해요. 행렬 연결을 쓸 때 파서는 함수 호출 오버헤드와 관련 함수의 입력 검증을 거치지 않고 즉시 문자열을 이어 붙이기 시작하거든요.

newline 함수를 쓰면 표시할 때 여러 줄로 나타나도록 문자열을 연결할 수 있어요.

newline

c = newline

개행 문자에 해당하는 문자를 반환해요. "\n"과 동일해요.

예제 코드:

joined_string = [newline "line1" newline "line2"]
⇒
line1
line2

참고: strcat, strjoin, strsplit.

이 외에도 특정 상황에서 유용한 문자열 연결 함수들이 있어요: char, strvcat, strcat, cstrcat. 마지막으로 일반 목적의 연결 함수 cat, horzcat, vertcat도 사용할 수 있어요.

문자열 연결 함수들의 차이를 정리하면 다음과 같아요.

  • cstrcat을 제외한 모든 문자열 연결 함수는 각 원소(또는 멀티바이트 시퀀스)에 해당하는 UTF-8 문자를 취해서 수치 입력을 문자 데이터로 변환해요.
char ([98, 97, 110, 97, 110, 97])
   ⇒  banana

로케일 인코딩과 UTF-8 사이의 변환은 unicode2native, native2unicode를 참고하세요.

  • charstrvcat은 세로로 연결하고, strcatcstrcat은 가로로 연결해요.
char ("an apple", "two pears")
    ⇒  an apple
       two pears
strcat ("oc", "tave", " is", " good", " for you")
     ⇒  octave is good for you
  • char는 입력의 빈 문자열마다 출력에 빈 행을 생성해요. 반면 strvcat은 빈 문자열을 제거해요.
char ("orange", "green", "", "red")
    ⇒  orange
       green

       red
strvcat ("orange", "green", "", "red")
    ⇒  orange
       green
       red
  • cstrcat을 제외한 모든 문자열 연결 함수는 셀 배열 데이터도 받아들여요. charstrvcat은 셀 배열을 문자 배열로 변환하고, strcat은 셀 배열의 셀들 안에서 연결해요.

  • strcat은 인자에서 끝의 공백을 제거하는 반면(셀 배열 안에서는 제외), cstrcat은 공백을 그대로 둬요. 두 동작 모두 경우에 따라 유용할 수 있어요.

strcat (["dir1";"directory2"], ["/";"/"], ["file1";"file2"])
     ⇒  dir1/file1
        directory2/file2
cstrcat (["thirteen apples"; "a banana"], [" 5$";" 1$"])
      ⇒  thirteen apples 5$
         a banana        1$

cstrcat 예에서 공백은 문자열 배열의 내부 표현에서 비롯된 거예요 (Character Arrays 참고).

char

C = char (A)
C = char (A, …)
C = char (str1, str2, …)
C = char (cell_array)
'' = char ()

하나 이상의 수치 행렬, 문자 행렬, 셀 배열에서 문자열 배열을 만들어요. 인자는 세로로 연결되고, 반환값은 문자열 배열의 각 행이 같은 길이가 되도록 필요하면 공백으로 채워져요. 입력의 빈 문자열은 의미가 있으며 출력에도 연결돼요.

수치 입력에서는 각 원소가 해당 ASCII 문자로 변환돼요. 입력이 ASCII 범위(0-255)를 벗어나면 범위 오류가 발생해요.

셀 배열이면 각 원소가 따로 연결돼요. char로 변환된 셀 배열은 대부분 cellstr로 되돌릴 수 있어요. 참고: strvcat, cellstr.

strvcat

C = strvcat (A)
C = strvcat (A, …)
C = strvcat (str1, str2, …)
C = strvcat (cell_array)

하나 이상의 수치 행렬, 문자 행렬, 셀 배열에서 문자 배열을 만들어요. 인자는 세로로 연결되고, 결과는 필요에 따라 공백으로 채워져 각 행이 같은 길이가 돼요. char와 달리 빈 문자열은 제거되고 출력에 나타나지 않아요.

수치 입력에서는 각 원소가 해당 ASCII 문자로 변환되고, 입력이 ASCII 범위(0-255)를 벗어나면 범위 오류가 발생해요. 셀 배열이면 각 원소가 따로 연결되며, strvcat으로 변환된 셀 배열은 대부분 cellstr로 되돌릴 수 있어요. 참고: char, strcat, cstrcat.

strcat

str = strcat (s1, s2, …)

모든 인자를 가로로 연결한 문자열을 반환해요. 인자가 셀 문자열이면 strcat은 개별 셀들이 연결된 셀 문자열을 반환해요.

수치 입력에서는 각 원소가 해당 ASCII 문자로 변환돼요. 어떤 문자 문자열 입력이든 끝 공백은 문자열이 연결되기 전에 제거돼요. 단, 셀 문자열 값은 공백이 정리되지 않는다는 점을 주의하세요. 참고: cstrcat, char, strvcat.

cstrcat

str = cstrcat (s1, s2, …)

모든 인자를 가로로 연결하되 끝 공백을 보존한 문자열을 반환해요. 참고: strcat, char, strvcat.

더 알아보기

  • 문자열의 일반적인 연산은 Common String Operations 절을 참고하세요.
  • 문자열을 나누고 합치는 함수는 Splitting and Joining Strings 절을 보세요.