String
Jenis string
mewakili teks yang tidak dapat diubah, sebagai urutan karakter Unicode. string
adalah alias untuk System.String
dalam .NET.
Keterangan
Literal string dibatasi oleh karakter tanda kutip ("). Karakter garis miring terbalik ( \ ) digunakan untuk mengodekan karakter khusus tertentu. Garis miring terbalik dan karakter berikutnya bersama-sama dikenal sebagai urutan escape. Urutan escape yang didukung dalam harfiah string F# diperlihatkan dalam tabel berikut.
karakter | Urutan escape |
---|---|
Peringatan | \a |
Backspace | \b |
Umpan formulir | \f |
Newline | \n |
Carriage return | \r |
Tab | \t |
Tab Vertikal | \v |
Garis miring terbalik | \\ |
Tanda kutip | \" |
Apostrof | \' |
Karakter Unicode | \DDD (di mana D menunjukkan digit desimal; rentang 000 - 255; misalnya, \231 = "ç") |
Karakter Unicode | \xHH (di mana H menunjukkan digit heksadesimal; kisaran 00 - FF; misalnya, \xE7 = "ç") |
Karakter Unicode | \uHHHH (UTF-16) (di mana H menunjukkan digit heksadesimal; kisaran 0000 - FFFF; misalnya, \u00E7 = "ç") |
Karakter Unicode | \U00HHHHHH (UTF-32) (di mana H menunjukkan digit heksadesimal; kisaran 000000 - 10FFFF; misalnya, \U0001F47D = "👽") |
Penting
Urutan escape \DDD
adalah notasi desimal, bukan notasi oktal seperti dalam sebagian besar bahasa lain. Oleh karena itu, digit 8
dan 9
valid, dan urutan \032
mewakili spasi (U+0020), sedangkan titik kode yang sama dalam notasi oktal adalah \040
.
Catatan
Dibatasi pada kisaran 0 - 255 (0xFF), urutan escape \DDD
dan \x
secara efektif merupakan rangkaian karakter ISO-8859-1, karena cocok dengan 256 poin kode Unicode pertama.
String Verbatim
Jika didahului oleh simbol @, harfiahnya adalah string verbatim. Mendeklarasikan string verbatim berarti bahwa setiap urutan escape diabaikan, kecuali bahwa dua karakter tanda kutip ditafsirkan sebagai satu karakter tanda kutip.
String Yang Dikutip Tiga Kali
Selain itu, string dapat diapit oleh tanda kutip tiga kali lipat. Dalam hal ini, semua urutan escape diabaikan, termasuk karakter tanda kutip ganda. Untuk menentukan string yang berisi string kutipan tersemat, Anda dapat menggunakan string verbatim atau string kutipan tiga. Jika Anda menggunakan string verbatim, Anda harus menentukan dua karakter tanda kutip untuk menunjukkan satu karakter tanda kutip. Jika Anda menggunakan string yang dikutip tiga kali, Anda dapat menggunakan karakter tanda kutip tunggal tanpa diurai sebagai akhir string. Teknik ini dapat berguna saat Anda bekerja dengan XML atau struktur lain yang menyertakan tanda kutip yang disematkan.
// 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">"""
Dalam kode, string yang memiliki hentian baris diterima dan hentian baris ditafsirkan sebagai pengodean baris baru yang digunakan dalam sumber, kecuali karakter garis miring terbalik adalah karakter terakhir sebelum pemisah baris. Spasi kosong di baris berikutnya diabaikan ketika karakter garis miring terbalik digunakan. Kode berikut menghasilkan string str1
yang memiliki nilai "abc\ndef"
dan string str2
yang memiliki nilai "abcdef"
.
let str1 =
"abc
def"
let str2 =
"abc\
def"
Pengindeksan dan Pemotongan String
Anda dapat mengakses karakter individual dalam string dengan menggunakan sintaks seperti array. Contoh berikut menggunakan []
untuk mengindeks string. Sintaks ini diperkenalkan dalam F# 6.0. Anda juga dapat menggunakan .[]
untuk mengindeks string di semua versi. Sintaks baru dipilih.
printfn "%c" str1[1]
Outputnya adalah b
.
Atau Anda dapat mengekstrak substring dengan menggunakan sintaksis iringan array, seperti yang ditunjukkan dalam kode berikut.
printfn "%s" str1[0..2]
printfn "%s" str2[3..5]
Outputnya sebagai berikut.
abc
def
Anda dapat mewakili string ASCII menurut array byte yang tidak ditandatangani, ketik byte[]
. Anda menambahkan akhiran B
ke string harfiah untuk menunjukkan bahwa itu adalah string ASCII. Harfiah string ASCII yang digunakan dengan array byte mendukung urutan escape yang sama dengan string Unicode, kecuali untuk urutan escape Unicode.
// "abc" interpreted as a Unicode string.
let str1: string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray: byte[] = "abc"B
Operator String
Operator +
dapat digunakan untuk menggabungkan string, mempertahankan kompatibilitas dengan fitur penanganan string .NET Framework. Contoh berikut mengilustrasikan perangkaian string.
let string1 = "Hello, " + "world"
Kelas String
Karena jenis string di F# sebenarnya adalah jenis .NET FrameworkSystem.String
, semua anggota System.String
tersedia. System.String
menyertakan operator +
, yang digunakan untuk menggabungkan string, properti Length
, dan properti Chars
, yang mengembalikan string sebagai larik karakter Unicode. Untuk informasi selengkapnya tentang string, lihat System.String
.
Dengan menggunakan properti Chars
dari System.String
, Anda dapat mengakses karakter individual dalam string dengan menentukan indeks, seperti yang ditunjukkan dalam kode berikut.
let printChar (str: string) (index: int) =
printfn "First character: %c" (str.Chars(index))
Modul String
Fungsionalitas tambahan untuk penanganan string disertakan dalam modul String
di namespace layanan FSharp.Core
. Untuk informasi selengkapnya, lihat Modul String.