文字列Strings

注意

この記事の API リファレンスのリンクをクリックすると MSDN に移動します。The API reference links in this article will take you to MSDN. docs.microsoft.com API リファレンスは完全ではありません。The docs.microsoft.com API reference is not complete.

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

コメント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 (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. 次のコードでは、値 "abc\ndef" を持つ文字列 str1 と、値 "abcdef"を持つ文字列 str2 が生成されます。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

文字列を連結するには、+ 演算子を使用する方法と ^ 演算子を使用する方法の2つの方法があります。There are two ways to concatenate strings: by using the + operator or by using the ^ operator. + 演算子は、.NET Framework 文字列処理機能との互換性を維持します。The + operator maintains 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 プロパティ、および Unicode 文字の配列として文字列を返す Chars プロパティが含まれます。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.String」を参照してください。For more information about strings, see System.String.

System.StringChars プロパティを使用すると、次のコードに示すように、インデックスを指定することによって文字列内の個々の文字にアクセスできます。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

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

参照See also