charとstring
文字を表す型として char
, 文字列を表す型として string
があります。より正確に、char
は、任意のUnicode文字1文字を表し、string
は、任意の Unicode 文字が順番に並んだ列を表します。
char
.NET において、char 型は UTF-16 コードに対応しています。日本語文字も問題なく扱えます。以下のように、シングルクォートで囲って使用します。
let x = 'a'
let y = 'あ'
string
F# における string
は、immutable です。すなわち、読み取り専用で再代入はできません。最大サイズは 2GB で、およそ 10 億文字までとなっています。ダブルクォートで囲って使用します。
let str = "Hello, World!!"
エスケープシーケンス
エスケープシーケンスとは、円記号(\
)とそれに続く文字のことをいいます。エスケープシーケンスを用いることで、制御文字(改行やタブ文字)などの特殊な文字を表現することができます。
let e1 = "a\tb" // "a b"
let e2 = "a\"b" // "a"b"
let path = "C:\\FSharp\\Love-Language" // C:\FSharp\Love-Language
エスケープシーケンスの一覧は、末尾のページを参考にしてください。
逐語的文字列
逐語的文字列とは、@
とダブルクォートを繋げた文字列のことです。逐語的文字列においては、エスケープシーケンスは無視され、表記したとおりに文字列解釈されます。
let new_path = @"C:\FSharp\Love-Language" // C:\FSharp\Love-Language
例外として、ダブルクォートを逐語的文字列で扱いたい場合は、重ねて(""
)使用します。
let d = @"{ ""name"":""midori"", ""age"":""29"" }" // { "name":"midori", "age":"29" }
また、トリプルクォートを使うことで、重ねる必要がなくなります。
let t = """{ "name":"midori", "age":"29" }""" // { "name":"midori", "age":"29" }
文字列演算子
+
を使用して、2 つ以上の文字列を連結できます。
let str = "Hello, " + "World!!" // "Hello, World!!"