文字列Strings

この string 型は、変更できないテキストを Unicode 文字のシーケンスとして表します。The string type represents immutable text as a sequence of Unicode characters. string は .NET の System.String の別名です。string is an alias for System.String in .NET.

注釈Remarks

文字列リテラルは引用符 (") で区切られます。String literals are delimited by the quotation mark (") character. バックスラッシュ文字 ( \ ) は、特定の特殊文字をエンコードするために使用されます。The backslash character ( \ ) is used to encode certain special characters. 円記号と次の文字は、 エスケープシーケンスと呼ばれます。The backslash and the next character together are known as an escape sequence. F # の文字列リテラルでサポートされているエスケープシーケンスを次の表に示します。Escape sequences supported in F# string literals are shown in the following table.

文字Character エスケープ シーケンスEscape sequence
アラート:Alert \a
バックスペースBackspace \b
フォーム フィードForm feed \f
改行Newline \n
キャリッジ リターンCarriage return \r
タブTab \t
垂直タブVertical tab \v
円記号Backslash \\
引用符Quotation mark \"
アポストロフィApostrophe \'
Unicode 文字Unicode character \DDD (は D 10 進数字、000-255 の範囲、 \231 = "ç" など)\DDD (where D indicates a decimal digit; range of 000 - 255; for example, \231 = "ç")
Unicode 文字Unicode character \xHH (は H 16 進数の数字、00 ~ FF の範囲、 \xE7 = "ç" など)\xHH (where H indicates a hexadecimal digit; range of 00 - FF; for example, \xE7 = "ç")
Unicode 文字Unicode character \uHHHH (UTF-16)(は H 16 進数の数字、0000 ~ FFFF の範囲を示します。 たとえば、 \u00E7 = "ç")\uHHHH (UTF-16) (where H indicates a hexadecimal digit; range of 0000 - FFFF; for example, \u00E7 = "ç")
Unicode 文字Unicode character \U00HHHHHH (UTF-32)( H は16進数字、範囲 000000-10FFFF を示します。 たとえば、 \U0001F47D = " 👽 ")\U00HHHHHH (UTF-32) (where H indicates a hexadecimal digit; range of 000000 - 10FFFF; for example, \U0001F47D = "👽")

重要

\DDDエスケープシーケンスは、他のほとんどの言語のような8進数表記ではなく、10進表記です。The \DDD escape sequence is decimal notation, not octal notation like in most other languages. したがって、桁数 89 は有効であり、のシーケンスは \032 空白 (U + 0020) を表しますが、8進数表記では同じコードポイントが使用さ \040 れます。Therefore, digits 8 and 9 are valid, and a sequence of \032 represents a space (U+0020), whereas that same code point in octal notation would be \040.

注意

0-255 (0xFF) の範囲に制限されている場合、とエスケープシーケンスは、実際には、 \DDD \x 最初の 256 Unicode コードポイントと一致するため、 ISO-8859-1 文字セットになります。Being constrained to a range of 0 - 255 (0xFF), the \DDD and \x escape sequences are effectively the ISO-8859-1 character set, since that matches the first 256 Unicode code points.

逐語的文字列Verbatim Strings

前に @ 記号が付いている場合、リテラルは逐語的文字列になります。If preceded by the @ symbol, the literal is a verbatim string. これは、2つの引用符文字が1つの引用符文字として解釈される点を除いて、すべてのエスケープシーケンスが無視されることを意味します。This means that any escape sequences are ignored, except that two quotation mark characters are interpreted as one quotation mark character.

三重引用符で囲まれた文字列Triple Quoted Strings

さらに、文字列を三重引用符で囲むこともできます。Additionally, a string may be enclosed by triple quotes. この場合、二重引用符文字を含め、すべてのエスケープシーケンスが無視されます。In this case, all escape sequences are ignored, including double quotation mark characters. 引用符で囲まれた埋め込み文字列を含む文字列を指定するには、逐語的文字列または三重引用符で囲んだ文字列を使用します。To specify a string that contains an embedded quoted string, you can either use a verbatim string or a triple-quoted string. 逐語的文字列を使用する場合は、単一引用符文字を示す2つの引用符文字を指定する必要があります。If you use a verbatim string, you must specify two quotation mark characters to indicate a single quotation mark character. 三重引用符で囲まれた文字列を使用する場合は、文字列の末尾として解析することなく、単一引用符文字を使用できます。If you use a triple-quoted string, you can use the single quotation mark characters without them being parsed as the end of the string. この手法は、XML や、埋め込み引用符を含むその他の構造体を操作する場合に便利です。This technique can be useful when you work with XML or other structures that include embedded quotation marks.

// 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">"""

コードでは、改行文字を含む文字列は改行文字として解釈されますが、バックスラッシュ文字が改行前の最後の文字である場合は除きます。In code, strings that have line breaks are accepted and the line breaks are interpreted literally as newlines, unless a backslash character is the last character before the line break. 円記号が使用されている場合、次の行の先頭の空白文字は無視されます。Leading white space on the next line is ignored when the backslash character is used. 次のコードでは、値を持つ文字列と値を持つ文字列が生成され str1 "abc\ndef" str2 "abcdef" ます。The following code produces a string str1 that has value "abc\ndef" and a string str2 that has value "abcdef".

let str1 = "abc
def"
let str2 = "abc\
def"

文字列のインデックス作成とスライスString Indexing and Slicing

次のように、配列に似た構文を使用して、文字列内の個々の文字にアクセスできます。You can access individual characters in a string by using array-like syntax, as follows.

printfn "%c" str1.[1]

出力は b になります。The output is b.

または、次のコードに示すように、配列スライス構文を使用して部分文字列を抽出することもできます。Or you can extract substrings by using array slice syntax, as shown in the following code.

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

出力は次のとおりです。The output is as follows.

abc
def

符号なしバイトの配列 (型) によって ASCII 文字列を表すことができ byte[] ます。You can represent ASCII strings by arrays of unsigned bytes, type byte[]. 文字列リテラルにサフィックスを追加し B て、ASCII 文字列であることを示します。You add the suffix B to a string literal to indicate that it is an ASCII string. バイト配列で使用される ASCII 文字列リテラルでは、unicode エスケープシーケンスを除き、Unicode 文字列と同じエスケープシーケンスがサポートされます。ASCII string literals used with byte arrays support the same escape sequences as Unicode strings, except for the Unicode escape sequences.

// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray : byte[] = "abc"B

文字列演算子String Operators

演算子を使用して文字列を + 連結し、文字列処理機能 .NET Framework との互換性を維持することができます。The + operator can be used to concatenate strings, maintaining compatibility with the .NET Framework string handling features. 次の例は、文字列の連結を示しています。The following example illustrates string concatenation.

let string1 = "Hello, " + "world"

String クラスString Class

F # の文字列型は実際には .NET Framework 型であるため、 System.String すべての System.String メンバーを使用できます。Because the string type in F# is actually a .NET Framework System.String type, all the System.String members are available. これには、文字列 + を連結するために使用される演算子、 Length プロパティ、および Chars Unicode 文字の配列として文字列を返すプロパティが含まれます。This includes the + operator, which is used to concatenate strings, the Length property, and the Chars property, which returns the string as an array of Unicode characters. 文字列の詳細については、「」を参照してください System.StringFor more information about strings, see System.String.

のプロパティを使用すると、 Chars System.String 次のコードに示すように、インデックスを指定することにより、文字列内の個々の文字にアクセスできます。By using the Chars property of System.String, you can access the individual characters in a string by specifying an index, as is shown in the following code.

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

文字列モジュールString Module

文字列処理の追加機能は、名前空間のモジュールに含まれてい String FSharp.Core ます。Additional functionality for string handling is included in the String module in the FSharp.Core namespace. 詳細については、「 文字列モジュール」を参照してください。For more information, see String Module.

関連項目See also