Dizeler
Türü sabit string
metni Unicode karakter dizisi olarak temsil eder. string
, .NET'te için System.String
bir diğer addır.
Açıklamalar
Dize değişmez değerleri tırnak işareti (") karakteriyle sınırlandırılır. Belirli özel karakterleri kodlamak için ters eğik çizgi karakteri ( \ ) kullanılır. Ters eğik çizgi ve sonraki karakter birlikte kaçış dizisi olarak bilinir. F# dize değişmez değerlerinde desteklenen kaçış dizileri aşağıdaki tabloda gösterilmiştir.
Karakter | Kaçış dizisi |
---|---|
Uyarı | \a |
Geri Al tuşu | \b |
Form akışı | \f |
Newline | \n |
Satır başı | \r |
Sekme | \t |
Dikey sekme | \v |
Ters eğik çizgi | \\ |
Tırnak işareti | \" |
Kesme işareti | \' |
Unicode karakter | \DDD (burada D ondalık basamak gösterir; 000 - 255 aralığı; örneğin, \231 = "ç") |
Unicode karakter | \xHH (burada H onaltılık bir basamak gösterir; 00 - FF aralığı; örneğin, \xE7 = "ç") |
Unicode karakter | \uHHHH (UTF-16) (burada H onaltılık bir basamak gösterir; 0000 - FFFF aralığı; örneğin, \u00E7 = "ç") |
Unicode karakter | \U00HHHHHH (UTF-32) (burada H onaltılık bir basamak gösterir; aralık 000000 - 10FFFF; örneğin, \U0001F47D = "👽") |
Önemli
Kaçış \DDD
dizisi, diğer dillerin çoğunda olduğu gibi sekizli gösterimi değil ondalık gösterimidir. Bu nedenle, basamaklar 8
ve 9
geçerli ve dizisi \032
bir boşluğu (U+0020) temsil ederken, sekizlik gösteriminde aynı kod noktası olacaktır \040
.
Not
0 - 255 (0xFF) \DDD
aralığında kısıtlanan ve \x
kaçış dizileri, ilk 256 Unicode kod noktasıyla eşleştiğinden , etkili bir şekilde ISO-8859-1 karakter kümesidir.
Düz Metin Dizeleri
Önünde @ simgesi varsa, değişmez değer bir düz metin dizesidir. Tamsayı dizesini bildirmek, iki tırnak işareti karakterinin tek tırnak işareti karakteri olarak yorumlanması dışında tüm kaçış dizilerinin yoksayıldığı anlamına gelir.
Üç Tırnak İşaretli Dizeler
Ayrıca, bir dize üç tırnak içine alınmış olabilir. Bu durumda, çift tırnak işareti karakterleri de dahil olmak üzere tüm kaçış dizileri yoksayılır. Katıştırılmış bir tırnak içine alınmış dize içeren bir dize belirtmek için, ayrıntılı bir dize veya üç tırnaklı bir dize kullanabilirsiniz. Ayrıntılı bir dize kullanıyorsanız, tek bir tırnak işareti karakterini belirtmek için iki tırnak işareti karakteri belirtmeniz gerekir. Üç tırnaklı bir dize kullanıyorsanız, tek tırnak işareti karakterlerini dizenin sonu olarak ayrıştırılmadan kullanabilirsiniz. Bu teknik, XML veya katıştırılmış tırnak işaretleri içeren diğer yapılarla çalışırken yararlı olabilir.
// 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">"""
Kodda, satır sonları olan dizeler kabul edilir ve satır sonları, satır sonundan önceki son karakter ters eğik çizgi karakteri olmadığı sürece kaynakta kullanılan yeni satır kodlaması olarak yorumlanır. Ters eğik çizgi karakteri kullanıldığında, sonraki satırdaki baştaki boşluk yoksayılır. Aşağıdaki kod değeri olan bir dize str1
ve değeri "abc\ndef"
olan "abcdef"
bir dize str2
oluşturur.
let str1 =
"abc
def"
let str2 =
"abc\
def"
Dize Dizin oluşturma ve Dilimleme
Dizi benzeri söz dizimini kullanarak bir dizedeki tek tek karakterlere erişebilirsiniz. Aşağıdaki örnekler dizeleri dizine almak için kullanılır []
. Bu söz dizimi F# 6.0'da kullanıma sunulmuştur. Tüm sürümlerdeki dizeleri dizine almak için de kullanabilirsiniz .[]
. Yeni söz dizimi tercih edilir.
printfn "%c" str1[1]
Çıkış b
olur.
Alternatif olarak, aşağıdaki kodda gösterildiği gibi dizi dilimi söz dizimini kullanarak alt dizeleri ayıklayabilirsiniz.
printfn "%s" str1[0..2]
printfn "%s" str2[3..5]
Çıktı aşağıdaki gibidir:
abc
def
ASCII dizelerini işaretsiz bayt dizilerine göre temsil edebilirsiniz, yazın byte[]
. Bunun bir ASCII dizesi olduğunu belirtmek için son eki B
bir dize değişmez değerine eklersiniz. Bayt dizileriyle kullanılan ASCII dize değişmez değerleri, Unicode kaçış dizileri dışında Unicode dizeleriyle aynı kaçış dizilerini destekler.
// "abc" interpreted as a Unicode string.
let str1: string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray: byte[] = "abc"B
Dize İşleçleri
+
işleci, .NET Framework dize işleme özellikleriyle uyumluluğu koruyarak dizeleri birleştirmek için kullanılabilir. Aşağıdaki örnekte dize birleştirme gösterilmektedir.
let string1 = "Hello, " + "world"
Dize Sınıfı
F# dilindeki dize türü aslında bir .NET Framework System.String
türü olduğundan, tüm System.String
üyeler kullanılabilir. System.String
dizeleri+
, özelliği ve Chars
dizeyi Length
Unicode karakter dizisi olarak döndüren özelliği birleştirmek için kullanılan işlecini içerir. Dizeler hakkında daha fazla bilgi için bkz System.String
. .
özelliğini System.String
kullanarakChars
, aşağıdaki kodda gösterildiği gibi bir dizin belirterek bir dizedeki tek tek karakterlere erişebilirsiniz.
let printChar (str: string) (index: int) =
printfn "First character: %c" (str.Chars(index))
Dize Modülü
Ad alanında modülde String
FSharp.Core
dize işlemeye yönelik ek işlevler bulunur. Daha fazla bilgi için bkz . Dize Modülü.