Elixir에서 문자열은 UTF‑8 인코딩을 사용한 바이너리(binary) 형태로 구현된다. 문자열 리터럴은 쌍따옴표(")로 감싸며, 내부에 Unicode 코드포인트를 직접 포함할 수 있다. 예를 들어 "안녕"은 6바이트(각 한글 글자는 3바이트) 길이의 바이너리로 저장된다.
주요 특성
- 불변성(Immutable): 문자열 객체는 생성 후 내용이 변경되지 않으며, 변경 연산(예:
<>연산자에 의한 결합)은 새로운 문자열을 생성한다. - Unicode 지원: 문자열은 Unicode 코드포인트를 그대로 보관하므로, 다국어 텍스트를 별도 인코딩 변환 없이 처리할 수 있다.
- 바이너리와 구분: Elixir에서는 바이너리(
<<>>)와 문자열을 구분한다. 문자열은 UTF‑8 인코딩이 보장된 바이너리이지만, 일반 바이너리는 임의의 바이트 시퀀스를 나타낸다. - 패턴 매칭: 문자열은 패턴 매칭에서 직접 사용할 수 있다. 예를 들어
<<first::utf8, rest::binary>> = "Hello"와 같이 첫 번째 문자와 나머지를 분리할 수 있다.
기본 연산
| 연산 | 설명 |
|---|---|
<> |
두 문자열을 연결하여 새 문자열을 반환한다. |
String.length/1 |
문자열의 문자(코드포인트) 수를 반환한다. |
String.slice/2,3 |
지정한 범위의 부분 문자열을 반환한다. |
String.upcase/1, String.downcase/1 |
대소문자 변환을 수행한다. |
String.split/2 |
구분자를 기준으로 문자열을 리스트로 분리한다. |
예시
iex> greeting = "Hello, 세계!"
"Hello, 세계!"
iex> String.length(greeting)
12
iex> part = String.slice(greeting, 7..-1)
"세계!"
사용 맥락
Elixir 문자열은 웹 서버 응답, 로그 메시지, 텍스트 파일 입출력 등 다양한 애플리케이션에서 사용된다. 특히, Phoenix 프레임워크와 같은 웹 프레임워크에서는 템플릿 렌더링 및 API 응답 본문을 문자열 형태로 다루는 경우가 많다.
참고: 위 내용은 Elixir 공식 문서 및 커뮤니티 자료에 기반한다.