次の方法で共有


文字列 (F#)

string 型は、Unicode 文字のシーケンスとしての、変更不可のテキストを表します。 string は、.NET Framework の String のエイリアスです。

解説

リテラル文字列は引用符 (") で区切ります。 特定の特殊文字をエンコードするには、円記号 (\) を使用します。 円記号とそれに続く文字の組み合わせをエスケープ シーケンスと呼びます。 F# のリテラル文字列でサポートされるエスケープ シーケンスを次の表に示します。

文字

エスケープ シーケンス

バックスペース

\b

改行

\n

キャリッジ リターン

\r

タブ

\t

円記号

\\

二重引用符

\"

アポストロフィ

\'

Unicode 文字

\uXXXX または \UXXXXXXXX (X は 16 進数の数字を示します)

@ 記号の後に続くリテラルは、逐語的文字列です。 この場合、2 つの引用符文字が 1 つの引用符文字として解釈されることを除いて、エスケープ シーケンスはすべて無視されます。

コードでは、改行を含む文字列はそのまま、改行は文字どおり改行として解釈されます。ただし、改行の前の最後の文字が円記号である場合を除きます。 円記号がある場合、次の行の先頭にある空白は無視されます。 次のコードは、値 "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

ASCII 文字列は、符号なしバイトの配列である byte[] 型で表すことができます。 リテラル文字列が ASCII 文字列であることを示すには、サフィックス B を追加します。 バイト配列を使用した ASCII リテラル文字列では、Unicode 文字列と同じエスケープ シーケンスがサポートされます (Unicode エスケープ シーケンスは除く)。

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

文字列演算子

文字列を連結するには、+ 演算子または ^ 演算子を使用する 2 つの方法があります。 + 演算子を使用すると、.NET Framework の文字列処理機能との互換性が維持されます。

文字列の連結の例を次に示します。

let string1 = "Hello, " + "world"

String クラス

F# の文字列型は実際には .NET Framework の String 型であるため、すべての String のメンバーを使用できます。 これには、+ 演算子 (文字列を連結するために使用される)、Length プロパティ、および Chars プロパティ (文字列を Unicode 文字の配列として返す) が含まれます。 文字列の詳細については、「String」を参照してください。

String の Chars プロパティを使用すると、次のコードに示すように、インデックスを指定して文字列中の各文字にアクセスできます。

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

String モジュール

文字列を処理するためのその他の機能は、FSharp.Core 名前空間の String モジュールに含まれています。 詳細については、「Core.String モジュール (F#)」を参照してください。

参照

参照

String

その他の技術情報

F# 言語リファレンス