문자열
이 형식은 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진수 표기법이 아니라 소수 표기법입니다. 따라서 숫자 8
와 9
유효하며 시퀀스는 \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
포함됩니다. 자세한 내용은 문자열 모듈을 참조 하세요.
참고 항목
.NET