문자열(F#)
string 형식은 변경할 수 없는 텍스트를 유니코드 문자의 시퀀스로 나타냅니다. string은 .NET Framework의 String에 대한 별칭입니다.
설명
문자열 리터럴은 따옴표 문자(")로 구분됩니다. 특수 문자를 인코딩하는 데는 백슬래시 문자(\)가 사용됩니다. 백슬래시와 그 다음에 오는 문자를 합쳐 이스케이프 시퀀스라고 합니다. 다음 표에는 F# 문자열 리터럴에 지원되는 이스케이프 시퀀스가 나와 있습니다.
문자 |
이스케이프 시퀀스 |
---|---|
백스페이스 |
\b |
줄 바꿈 |
\n |
캐리지 리턴 |
\r |
탭 |
\t |
백슬래시 |
\\ |
큰따옴표 |
\" |
아포스트로피 |
\' |
유니코드 문자 |
\uXXXX 또는 \UXXXXXXXX(여기서 X는 16진수입니다.) |
@ 기호가 앞에 오는 리터럴은 축자 문자열입니다. 리터럴이 축자 문자열인 경우 연속으로 나오는 따옴표 문자 두 개가 따옴표 문자 한 개로 해석되는 것을 제외하고는 이스케이프 시퀀스가 모두 무시됩니다.
코드에서 문자열에 줄 바꿈을 포함할 수 있으며, 백슬래시 문자가 줄 바꿈 바로 앞에 오는 마지막 문자가 아니면 줄 바꿈은 줄 바꿈이라는 원래 의미 그대로 해석됩니다. 백슬래시 문자를 사용하는 경우 다음 줄의 선행 공백은 무시됩니다. 다음 코드는 값이 "abc\r\n def"인 str1 문자열과 값이 "abcdef"인 str2 문자열을 생성합니다.
let str1 = "abc
def"
let str2 = "abc\
def"
문자열을 사용하여 작업할 때 F#는 검색하는 동안 줄 바꿈 문자를 유지하므로 파일의 문자열을 줄 바꿈(LF 또는 \n)을 사용할 것인지, 캐리지 리턴 및 줄 바꿈(CRLF 또는 \r\n)을 사용하여 읽을 것인지 확인할 수 있습니다(단, 유지되는 경우).
다음과 같이 배열 방식의 구문을 사용하여 문자열의 개별 문자에 액세스할 수 있습니다.
printfn "%c" str1.[1]
출력은 b입니다.
또는 다음 코드에서와 같이 배열 조각 구문을 사용하여 하위 문자열을 추출할 수 있습니다.
printfn "%s" (str1.[0..2])
printfn "%s" (str2.[3..5])
출력은 다음과 같습니다.
abc
def
byte[] 형식의 부호 없는 바이트 배열을 사용하여 ASCII 문자열을 표현할 수 있습니다. 문자열 리터럴에 접미사 B를 추가하여 해당 리터럴이 ASCII 문자열임을 나타낼 수 있습니다. 바이트 배열을 사용하는 ASCII 문자열 리터럴은 유니코드 이스케이프 시퀀스를 제외하고 유니코드 문자열과 동일한 이스케이프 시퀀스를 지원합니다.
// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray : byte[] = "abc"B
문자열 연산자
문자열을 연결하는 데는 + 연산자를 사용하거나 ^ 연산자를 사용하는 두 가지 방법이 있습니다. + 연산자는 .NET Framework 문자열 처리 기능과의 호환성을 유지합니다.
다음 예제에서는 일반적인 문자열 연결을 보여 줍니다.
let string1 = "Hello, " + "world"
문자열 클래스
F#의 문자열 형식은 실제로는 .NET Framework String 형식이므로 모든 String 멤버를 사용할 수 있습니다. 여기에는 문자열을 연결하는 데 사용되는 + 연산자, Length 속성, 문자열을 유니코드 문자의 배열로 반환하는 Chars 속성 등이 포함됩니다. 문자열에 대한 자세한 내용은 String을 참조하십시오.
String의 Chars 속성을 사용하면 다음 코드에서와 같이 인덱스를 지정하여 문자열의 개별 문자에 액세스할 수 있습니다.
let printChar (str : string) (index : int) =
printfn "First character: %c" (str.Chars(index))
문자열 모듈
FSharp.Core 네임스페이스의 String 모듈에는 문자열을 처리하기 위한 추가 기능이 포함되어 있습니다. 자세한 내용은 Core.String 모듈(F#)을 참조하십시오.