문자열

이 형식은 string 변경할 수 없는 텍스트를 유니코드 문자 시퀀스로 나타냅니다. string는 .NET에서 System.String의 별칭입니다.

설명

문자열 리터럴은 따옴표(") 문자로 구분됩니다. 백슬래시 문자(\)는 특정 특수 문자를 인코딩하는 데 사용됩니다. 백슬래시 및 다음 문자를 함께 이스케이프 시퀀스라고 합니다. F# 문자열 리터럴에서 지원되는 이스케이프 시퀀스는 다음 표에 나와 있습니다.

캐릭터 이스케이프 시퀀스
경고 \a
백스페이스 \b
폼 피드 \f
줄 바꿈 \n
캐리지 리턴 \r
Tab \t
세로 탭 \v
백슬래시 \\
물음표 \"
아포스트로피 \'
유니코드 문자 \DDD 10진수를 나타내는 경우 D , 범위는 000 ~255입니다(예: \231 "ç").
유니코드 문자 \xHH (여기서 H 16진수, 범위 00 - FF, 예: \xE7 = "ç")
유니코드 문자 \uHHHH (UTF-16) (여기서 H 16진수, 범위 0000 - FFFF, 예: \u00E7 = "ç")
유니코드 문자 \U00HHHHHH (UTF-32) (여기서 H 16진수, 범위 0000000 - 10FFFF, 예: \U0001F47D = "👽")

Important

\DDD 스케이프 시퀀스는 대부분의 다른 언어와 마찬가지로 8진수 표기법이 아니라 소수 표기법입니다. 따라서 숫자 89 유효하며 시퀀스는 \032 공백(U+0020)을 나타내는 반면, 8진수 표기법의 동일한 코드 포인트는 다음과 같습니다 \040.

참고 항목

0-255(0xFF) 범위로 제한되는 이 \DDD\x 스케이프 시퀀스는 ISO-8859-1 문자 집합입니다. 이는 처음 256개의 유니코드 코드 포인트와 일치하기 때문에 효과적으로 ISO-8859-1 문자 집합입니다.

축자 문자열

@ 기호 앞에 오는 경우 리터럴은 축자 문자열입니다. 축자 문자열을 선언하면 두 개의 따옴표 문자가 하나의 따옴표 문자로 해석된다는 점을 제외하고 모든 이스케이프 시퀀스가 무시됩니다.

따옴표 붙은 삼중 문자열

또한 문자열은 큰따옴표로 묶을 수 있습니다. 이 경우 큰따옴표 문자를 포함하여 모든 이스케이프 시퀀스가 무시됩니다. 포함된 따옴표 붙은 문자열을 포함하는 문자열을 지정하려면 축자 문자열 또는 큰따옴표로 묶은 문자열을 사용할 수 있습니다. 축자 문자열을 사용하는 경우 작은따옴표 문자를 나타내기 위해 두 개의 따옴표 문자를 지정해야 합니다. 삼중따옴표 문자열을 사용하는 경우 문자열의 끝으로 구문 분석하지 않고 작은따옴표 문자를 사용할 수 있습니다. 이 기술은 XML 또는 포함된 따옴표를 포함하는 다른 구조체로 작업할 때 유용할 수 있습니다.

// Using a verbatim string
let xmlFragment1 = @"<book author=""Milton, John"" title=""Paradise Lost"">"

// Using a triple-quoted string
let xmlFragment2 = """<book author="Milton, John" title="Paradise Lost">"""

코드에서 줄 바꿈이 있는 문자열이 허용되고 줄 바꿈이 줄 바꿈 이전의 마지막 문자가 아닌 한 소스에서 사용되는 줄 바꿈 인코딩으로 해석됩니다. 백슬래시 문자를 사용하면 다음 줄의 선행 공백이 무시됩니다. 다음 코드는 값이 있는 문자열 str1 과 값 "abc\ndef""abcdef"이 있는 문자열 str2 을 생성합니다.

let str1 =
    "abc
def"

let str2 =
    "abc\
def"

문자열 인덱싱 및 조각화

배열과 유사한 구문을 사용하여 문자열의 개별 문자에 액세스할 수 있습니다. 다음 예제에서는 문자열을 인덱싱하는 데 사용합니다 [] . 이 구문은 F# 6.0에서 도입되었습니다. 모든 버전에서 문자열을 인덱싱하는 데 사용할 .[] 수도 있습니다. 새 구문이 선호됩니다.

printfn "%c" str1[1]

b가 출력됩니다.

또는 다음 코드와 같이 배열 조각 구문을 사용하여 하위 문자열을 추출할 수 있습니다.

printfn "%s" str1[0..2]
printfn "%s" str2[3..5]

출력은 다음과 같습니다.

abc
def

부호 없는 바이트의 배열로 ASCII 문자열을 나타낼 수 있습니다 byte[]. 문자열 리터럴에 접미사를 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 System.String 형식이므로 모든 멤버를 System.String 사용할 수 있습니다. System.String+ 에는 문자열Length, 속성 및 Chars 속성을 연결 하는 데 사용 되는 연산자를 포함 하 고 유니코드 문자의 배열로 문자열을 반환 합니다. 문자열에 대한 자세한 내용은 다음을 참조하세요 System.String.

다음 코드와 Chars 같이 인덱스 속성을 사용하여 문자열의 System.String개별 문자에 액세스할 수 있습니다.

let printChar (str: string) (index: int) =
    printfn "First character: %c" (str.Chars(index))

문자열 모듈

문자열 처리에 대한 추가 기능은 네임스페이스의 String 모듈에 FSharp.Core 포함됩니다. 자세한 내용은 문자열 모듈을 참조 하세요.

참고 항목