Strings
Core.AbstractString — TypeAbstractString türü, Julia'daki tüm string uygulamalarının süpertipidir. Stringler, AbstractChar türü tarafından temsil edilen Unicode kod noktalarının dizilerinin kodlamalarıdır. Julia, stringler hakkında birkaç varsayımda bulunur:
Stringler, sabit boyutlu "kod birimleri" açısından kodlanmıştır.
- Kod birimleri
codeunit(s, i)ile çıkarılabilir - İlk kod biriminin indeksi
1'dir - Son kod biriminin indeksi
ncodeunits(s)'dir 1 ≤ i ≤ ncodeunits(s)koşulunu sağlayan herhangi bir indeksgeçerlidir
- Kod birimleri
String indeksleme, bu kod birimleri açısından yapılır:
- Karakterler, geçerli bir string indeksi
iiles[i]ile çıkarılır - Bir stringdeki her
AbstractChar, bir veya daha fazla kod birimi ile kodlanmıştır - Bir
AbstractChar'ın ilk kod biriminin indeksi geçerli bir indekstir - Bir
AbstractChar'ın kodlaması, öncesinde veya sonrasında ne olduğundan bağımsızdır - String kodlamaları kendinden senkronizedir – yani
isvalid(s, i)O(1) zaman karmaşıklığına sahiptir
- Karakterler, geçerli bir string indeksi
Kod birimlerini, karakterleri veya stringlerden alt dizeleri çıkaran bazı string fonksiyonları, onlara geçersiz veya sınır dışı string indeksleri verirseniz hata verir. Bu, codeunit(s, i) ve s[i]'yi içerir. String indeks aritmetiği yapan fonksiyonlar, indeksleme konusunda daha rahat bir yaklaşım benimser ve sınır içindeyken size en yakın geçerli string indeksini verir veya sınır dışındayken, stringin her iki tarafında sonsuz sayıda karakter varmış gibi davranır. Genellikle bu hayali dolgu karakterlerinin kod birimi uzunluğu 1'dir, ancak string türleri, uygulamaları için mantıklı olan farklı "hayali" karakter boyutlarını seçebilir (örneğin, alt dizeler, indeks aritmetiğini sağladıkları altındaki stringe iletebilir). Rahat indeksleme fonksiyonları, indeks aritmetiği için tasarlanmış olanları içerir: thisind, nextind ve prevind. Bu model, bir karakter almak için asla kullanılmadığı sürece, sınır dışı indekslerle ara değerler olarak çalışacak şekilde indeks aritmetiğinin çalışmasına olanak tanır; bu genellikle kenar durumları etrafında kod yazma gereksinimini azaltmaya yardımcı olur.
Ayrıca codeunit, ncodeunits, thisind, nextind, prevind bakın.
Core.AbstractChar — TypeAbstractChar türü, Julia'daki tüm karakter uygulamalarının üst türüdür. Bir karakter, bir Unicode kod noktasını temsil eder ve kod noktasının sayısal değerini elde etmek için codepoint fonksiyonu aracılığıyla bir tam sayıya dönüştürülebilir veya aynı tam sayıdan oluşturulabilir. Bu sayısal değerler, karakterlerin < ve == ile nasıl karşılaştırıldığını belirler. Yeni T <: AbstractChar türleri, en azından bir codepoint(::T) metodu ve bir T(::UInt32) yapıcı tanımlamalıdır.
Verilen bir AbstractChar alt türü, yalnızca Unicode'un bir alt kümesini temsil etme yeteneğine sahip olabilir; bu durumda, desteklenmeyen bir UInt32 değerine dönüşüm bir hata fırlatabilir. Tersine, yerleşik Char türü, geçersiz bayt akışlarını kayıpsız bir şekilde kodlamak için bir üst küme Unicode'u temsil eder; bu durumda, bir Unicode olmayan değerin UInt32'ye dönüşümü bir hata fırlatır. isvalid fonksiyonu, belirli bir AbstractChar türünde hangi kod noktalarının temsil edilebilir olduğunu kontrol etmek için kullanılabilir.
Dahili olarak, bir AbstractChar türü çeşitli kodlamalar kullanabilir. codepoint(char) aracılığıyla dönüşüm, bu kodlamayı açığa çıkarmayacaktır çünkü her zaman karakterin Unicode değerini döndürür. Herhangi bir c::AbstractChar için print(io, c) ifadesi, gerekirse Char'a dönüşüm yoluyla io tarafından belirlenen bir kodlama üretir (tüm yerleşik IO türleri için UTF-8).
Buna karşılık, write(io, c), typeof(c)'ye bağlı olarak bir kodlama yayabilir ve read(io, typeof(c)), write ile aynı kodlamayı okumalıdır. Yeni AbstractChar türleri, write ve read için kendi uygulamalarını sağlamalıdır.
Core.Char — TypeChar(c::Union{Number,AbstractChar})Char, Julia'daki karakterlerin varsayılan temsilidir ve 32 bitlik bir AbstractChar türüdür. Char, 'x' gibi karakter literalleri için kullanılan türdür ve aynı zamanda String türünün eleman türüdür.
Bir String içinde saklanan rastgele bayt akışlarını kayıpsız bir şekilde temsil etmek için, bir Char değeri Unicode kod noktasına dönüştürülemeyen bilgileri depolayabilir — böyle bir Char'ı UInt32'ye dönüştürmek bir hata fırlatır. c'nin geçerli bir Unicode karakterini temsil edip etmediğini sorgulamak için isvalid(c::Char) fonksiyonu kullanılabilir.
Base.codepoint — Functioncodepoint(c::AbstractChar) -> IntegerKarakter c ile ilgili Unicode kod noktası (bir işaretsiz tam sayı) döndürülür (veya c geçerli bir karakteri temsil etmiyorsa bir istisna fırlatılır). Char için bu bir UInt32 değeri, ancak yalnızca Unicode'un bir alt kümesini temsil eden AbstractChar türleri farklı boyutta bir tam sayı döndürebilir (örneğin UInt8).
Base.length — Methodlength(s::AbstractString) -> Int
length(s::AbstractString, i::Integer, j::Integer) -> IntDize s dizisindeki i ile j indeksleri arasındaki karakter sayısını döndürür.
Bu, i ile j arasındaki geçerli karakter indeksleri olan kod birimi indekslerinin sayısı olarak hesaplanır. Sadece tek bir dize argümanı ile, bu tüm dizideki karakter sayısını hesaplar. i ve j argümanları ile, s dizisinde geçerli indeksler olan i ile j arasındaki (dahil) indekslerin sayısını hesaplar. Sınır içindeki değerlere ek olarak, i sınır dışı değeri ncodeunits(s) + 1 alabilir ve j sınır dışı değeri 0 alabilir.
Bu işlemin zaman karmaşıklığı genel olarak lineerdir. Yani, dizedeki bayt veya karakter sayısına orantılı bir zaman alacaktır çünkü değeri anlık olarak sayar. Bu, diziler için olan yöntemle karşılaştırıldığında, sabit zamanlı bir işlemdir.
Ayrıca bkz. isvalid, ncodeunits, lastindex, thisind, nextind, prevind.
Örnekler
julia> length("jμΛIα")
5Base.sizeof — Methodsizeof(str::AbstractString)str'nin bayt cinsinden boyutu. str'deki kod birimlerinin sayısı ile str'deki bir kod biriminin bayt cinsinden boyutunun çarpımına eşittir.
Örnekler
julia> sizeof("")
0
julia> sizeof("∀")
3Base.:* — Method*(s::Union{AbstractString, AbstractChar}, t::Union{AbstractString, AbstractChar}...) -> AbstractStringDizeleri ve/veya karakterleri birleştirir, uygun şekilde bir String veya AnnotatedString üretir. Bu, argümanlar üzerinde string veya annotatedstring fonksiyonunu çağırmakla eşdeğerdir. Yerleşik dize türlerinin birleştirilmesi her zaman String türünde bir değer üretirken, diğer dize türleri uygun olduğunda farklı bir türde dize döndürmeyi seçebilir.
Örnekler
julia> "Hello " * "world"
"Hello world"
julia> 'j' * "ulia"
"julia"Base.:^ — Method^(s::Union{AbstractString,AbstractChar}, n::Integer) -> AbstractStringBir dizeyi veya karakteri n kez tekrarlayın. Bu aynı zamanda repeat(s, n) olarak da yazılabilir.
Ayrıca bkz. repeat.
Örnekler
julia> "Test "^3
"Test Test Test "Base.string — Functionstring(n::Integer; base::Integer = 10, pad::Integer = 1)Bir tam sayıyı n verilen base'de bir dizeye dönüştürür, isteğe bağlı olarak doldurulacak basamak sayısını belirtir.
Ayrıca bkz. digits, bitstring, count_zeros.
Örnekler
julia> string(5, base = 13, pad = 4)
"0005"
julia> string(-13, base = 5, pad = 4)
"-0023"string(xs...)Herhangi bir değerden bir dize oluşturmak için print işlevini kullanın.
string genellikle doğrudan tanımlanmamalıdır. Bunun yerine, print(io::IO, x::MyType) yöntemini tanımlayın. Belirli bir tür için string(x) yüksek verimli olması gerekiyorsa, string'e bir yöntem eklemek ve print(io::IO, x::MyType) = print(io, string(x)) tanımlamak mantıklı olabilir; bu, işlevlerin tutarlı olmasını sağlar.
Ayrıca bakınız: String, repr, sprint, show.
Örnekler
julia> string("a", 1, true)
"a1true"Base.repeat — Methodrepeat(s::AbstractString, r::Integer)Bir dizeyi r kez tekrarlar. Bu, s^r olarak yazılabilir.
Ayrıca bkz. ^.
Örnekler
julia> repeat("ha", 3)
"hahaha"Base.repeat — Methodrepeat(c::AbstractChar, r::Integer) -> StringBir karakteri r kez tekrarlar. Bu, c^r çağrılarak da eşdeğer şekilde gerçekleştirilebilir.
Örnekler
julia> repeat('A', 3)
"AAA"Base.repr — Methodrepr(x; context=nothing)Herhangi bir değerden bir dize oluşturmak için show fonksiyonunu kullanmalısınız. repr'e yöntem eklememelisiniz; bunun yerine bir show yöntemi tanımlayın.
İsteğe bağlı anahtar argümanı context, bir :key=>value çifti, :key=>value çiftleri içeren bir demet veya show'a geçirilen I/O akışı için kullanılan özelliklere sahip bir IO veya IOContext nesnesi olarak ayarlanabilir.
repr(x)'in genellikle x'in Julia'da nasıl girileceğine benzer olduğunu unutmayın. Bunun yanı sıra, x'in insan tüketimi için tasarlanmış "güzel yazılmış" bir versiyonunu döndürmek için repr(MIME("text/plain"), x) kullanın; bu, x'in REPL görüntülemesine eşdeğerdir.
Anahtar context'e bir demet geçmek, Julia 1.7 veya daha yenisini gerektirir.
Örnekler
julia> repr(1)
"1"
julia> repr(zeros(3))
"[0.0, 0.0, 0.0]"
julia> repr(big(1/3))
"0.333333333333333314829616256247390992939472198486328125"
julia> repr(big(1/3), context=:compact => true)
"0.333333"Core.String — MethodString(s::AbstractString)Mevcut bir AbstractString'den yeni bir String oluşturur.
Base.SubString — TypeSubString(s::AbstractString, i::Integer, j::Integer=lastindex(s))
SubString(s::AbstractString, r::UnitRange{<:Integer})getindex gibi, ancak bir kopya yapmak yerine s ana dizesi içindeki i:j veya r aralığında bir görünüm döndürür.
@views makrosu, bir kod bloğundaki herhangi bir dize dilimini s[i:j] alt dizelerine SubString(s, i, j) dönüştürür.
Örnekler
julia> SubString("abc", 1, 2)
"ab"
julia> SubString("abc", 1:2)
"ab"
julia> SubString("abc", 2)
"bc"Base.LazyString — TypeLazyString <: AbstractStringBir dizi interpolasyonunun tembel bir temsili. Bu, bir dizinin, gerçek interpolasyonun ve dizi inşasının gereksiz veya istenmeyen olduğu bir bağlamda oluşturulması gerektiğinde faydalıdır (örneğin, işlevlerin hata yollarında).
Bu tür, çalışma zamanında inşa edilmesi için ucuz olacak şekilde tasarlanmıştır ve mümkün olduğunca fazla işi makroya veya daha sonraki yazdırma işlemlerine devretmeye çalışır.
Örnekler
julia> n = 5; str = LazyString("n is ", n)
"n is 5"Ayrıca @lazy_str bakınız.
LazyString, Julia 1.8 veya daha yenisini gerektirir.
Genişletilmiş yardım
Eşzamanlı programlar için güvenlik özellikleri
Bir tembel dizi, birden fazla Julia görevinde yazdırılsa bile, kendisi herhangi bir eşzamanlılık problemi oluşturmaz. Ancak, yakalanmış bir değerin print yöntemleri, senkronizasyon olmadan çağrıldığında bir eşzamanlılık sorunu yaşayabilir; tembel dizinin yazdırılması bir sorun yaratabilir. Ayrıca, yakalanmış değerler üzerindeki print yöntemleri birden fazla kez çağrılabilir, ancak yalnızca tam olarak bir sonuç dönecektir.
LazyString, yukarıdaki anlamda Julia 1.9 ve sonrasında güvenlidir.
Base.@lazy_str — Macrolazy"str"Bir LazyString oluşturmak için normal dize interpolasyon sözdizimini kullanın. Interpolasyonların, LazyString oluşturma zamanında değerlendirildiğini, ancak dizeye ilk erişim anına kadar yazdırmanın ertelendiğini unutmayın.
LazyString belgelerine bakarak eşzamanlı programlar için güvenlik özelliklerini inceleyin.
Örnekler
julia> n = 5; str = lazy"n is $n"
"n is 5"
julia> typeof(str)
LazyStringlazy"str" Julia 1.8 veya daha yenisini gerektirir.
Base.transcode — Functiontranscode(T, src)Unicode kodlamaları arasında dize verilerini dönüştürür. src, ya bir String ya da UTF-XX kod birimlerinin Vector{UIntXX}'sidir; burada XX 8, 16 veya 32'dir. T, dönüş değerinin kodlamasını belirtir: (UTF-8 kodlu) bir String döndürmek için String veya UTF-XX verilerinin bir Vector{UIntXX}'sini döndürmek için UIntXX. (Dış C kütüphaneleri tarafından kullanılan wchar_t* dizelerini dönüştürmek için tam sayı türü olarak Cwchar_t de kullanılabilir.)
transcode fonksiyonu, giriş verileri hedef kodlamada makul bir şekilde temsil edilebildiği sürece başarılı olur; geçersiz Unicode verileri için bile, UTF-XX kodlamaları arasında dönüşümler için her zaman başarılıdır.
Şu anda yalnızca UTF-8'e/UTF-8'den dönüşüm desteklenmektedir.
Örnekler
julia> str = "αβγ"
"αβγ"
julia> transcode(UInt16, str)
3-element Vector{UInt16}:
0x03b1
0x03b2
0x03b3
julia> transcode(String, transcode(UInt16, str))
"αβγ"Base.unsafe_string — Functionunsafe_string(p::Ptr{UInt8}, [length::Integer])C tarzı (NUL ile sonlandırılmış) UTF-8 olarak kodlanmış bir stringi bir adresten kopyalar. (Pointer daha sonra güvenle serbest bırakılabilir.) Eğer length belirtilmişse (verinin byte cinsinden uzunluğu), string NUL ile sonlandırılmak zorunda değildir.
Bu fonksiyon "güvensiz" olarak etiketlenmiştir çünkü p, istenen uzunluktaki veriye geçerli bir bellek adresi değilse çökmesine neden olur.
Base.ncodeunits — Methodncodeunits(s::AbstractString) -> IntBir dizedeki kod birimlerinin sayısını döndürür. Bu dizeye erişmek için geçerli olan indeksler 1 ≤ i ≤ ncodeunits(s) koşulunu sağlamalıdır. Tüm bu indeksler geçerli olmayabilir – bir karakterin başlangıcı olmayabilirler, ancak codeunit(s,i) çağrıldığında bir kod birimi değeri döndüreceklerdir.
Örnekler
julia> ncodeunits("The Julia Language")
18
julia> ncodeunits("∫eˣ")
6
julia> ncodeunits('∫'), ncodeunits('e'), ncodeunits('ˣ')
(3, 1, 2)Ayrıca codeunit, checkbounds, sizeof, length, lastindex bakınız.
Base.codeunit — Functioncodeunit(s::AbstractString) -> Type{<:Union{UInt8, UInt16, UInt32}}Verilen dize nesnesinin kod birimi türünü döndürür. ASCII, Latin-1 veya UTF-8 kodlamalı dizeler için bu UInt8 olur; UCS-2 ve UTF-16 için UInt16; UTF-32 için UInt32 olur. Kod birimi türü bu üç türle sınırlı olmak zorunda değildir, ancak bu birimlerden birini kullanmayan yaygın olarak kullanılan dize kodlamalarını düşünmek zordur. codeunit(s) ifadesi, s boş olmayan bir dize olduğunda typeof(codeunit(s,1)) ile aynıdır.
Ayrıca ncodeunits bakınız.
codeunit(s::AbstractString, i::Integer) -> Union{UInt8, UInt16, UInt32}Dize s içindeki i indeksindeki kod birimi değerini döndürür. Şunu unutmayın
codeunit(s, i) :: codeunit(s)Yani, codeunit(s, i) tarafından döndürülen değer, codeunit(s) tarafından döndürülen türdedir.
Örnekler
julia> a = codeunit("Hello", 2)
0x65
julia> typeof(a)
UInt8Ayrıca bkz. ncodeunits, checkbounds.
Base.codeunits — Functioncodeunits(s::AbstractString)Bir dize içindeki kod birimlerini içeren vektör benzeri bir nesne elde edin. Varsayılan olarak bir CodeUnits sarmalayıcı döner, ancak gerekirse yeni dize türleri için codeunits isteğe bağlı olarak tanımlanabilir.
Örnekler
julia> codeunits("Juλia")
6-element Base.CodeUnits{UInt8, String}:
0x4a
0x75
0xce
0xbb
0x69
0x61Base.ascii — Functionascii(s::AbstractString)Bir dizeyi String türüne dönüştürür ve yalnızca ASCII verileri içerdiğini kontrol eder, aksi takdirde ilk non-ASCII baytının konumunu belirten bir ArgumentError fırlatır.
Ayrıca, non-ASCII karakterleri filtrelemek veya değiştirmek için isascii predikatını da inceleyin.
Örnekler
julia> ascii("abcdeγfgh")
HATA: ArgumentError: geçersiz ASCII "abcdeγfgh" dizisinde 6. indekste
Yığın izi:
[...]
julia> ascii("abcdefgh")
"abcdefgh"Base.Regex — TypeRegex(pattern[, flags]) <: AbstractPatternBir düzenli ifade temsil eden bir türdür. Regex nesneleri, dizeleri match ile eşleştirmek için kullanılabilir.
Regex nesneleri, @r_str dize makrosu kullanılarak oluşturulabilir. Regex(pattern[, flags]) yapıcı genellikle pattern dizesinin interpolasyona ihtiyaç duyduğu durumlarda kullanılır. Bayraklar hakkında daha fazla bilgi için dize makrosunun belgelerine bakın.
İnterpolasyon yapılmış değişkenleri kaçırmak için \Q ve \E kullanın (örneğin, Regex("\\Q$x\\E"))
Base.@r_str — Macro@r_str -> RegexBir regex oluşturun, örneğin r"^[a-z]*$" gibi, interpolasyon ve kaçış olmadan (tırnak işareti " hariç, bu hala kaçırılmalıdır). Regex ayrıca, davranışını değiştirmek için son alıntıdan sonra listelenen bir veya daha fazla bayrağı kabul eder:
ibüyük/küçük harf duyarsız eşleşmeyi etkinleştirirm^ve$belirteçlerini tüm dize yerine bireysel satırların başlangıç ve sonunu eşleyecek şekilde işler.s.belirtecinin yeni satırları eşlemesine izin verir.x"serbest boşluk modu"nu etkinleştirir: regex belirteçleri arasındaki boşluklar,\ile kaçırılmadıkça yok sayılır ve regex içindeki#bir yorumun başlangıcı olarak kabul edilir (bu, satır sonuna kadar yok sayılır).aASCII modunu etkinleştirir (UTF ve UCP modlarını devre dışı bırakır). Varsayılan olarak\B,\b,\D,\d,\S,\s,\W,\wvb. Unicode karakter özelliklerine dayalı olarak eşleşir. Bu seçenekle, bu diziler yalnızca ASCII karakterlerini eşleştirir. Bu, belirtilen karakter değerini doğrudan tek bir bayt olarak çıkaracak olan\uiçin de geçerlidir ve UTF-8'e kodlamaya çalışmaz. Önemli olarak, bu seçenek, hem eşleştirici hem de hedefin basit baytlar olarak ele alınmasını sağlayarak geçersiz UTF-8 dizeleriyle eşleşmeye izin verir (sanki ISO/IEC 8859-1 / Latin-1 baytlarıymış gibi) ve genelliklesile birleştirilir. Bu seçenek, deseni(*UCP)veya(*UTF)ile başlatarak daha da rafine edilebilir.
Interpolasyon gerekiyorsa Regex kısmına bakın.
Örnekler
julia> match(r"a+.*b+.*?d$"ism, "Goodbye,\nOh, angry,\nBad world\n")
RegexMatch("angry,\nBad world")Bu regex'in ilk üç bayrağı etkinleştirilmiştir.
Base.SubstitutionString — TypeSubstitutionString(substr) <: AbstractStringVerilen substr dizesini bir SubstitutionString olarak saklar, düzenli ifade yer değiştirmelerinde kullanılmak üzere. En yaygın olarak @s_str makrosu kullanılarak oluşturulur.
Örnekler
julia> SubstitutionString("Hello \\g<name>, it's \\1")
s"Hello \g<name>, it's \1"
julia> subst = s"Hello \g<name>, it's \1"
s"Hello \g<name>, it's \1"
julia> typeof(subst)
SubstitutionString{String}Base.@s_str — Macro@s_str -> DeğiştirmeDizesiDüzenli ifade değiştirmeleri için kullanılan bir değiştirme dizesi oluşturur. Dizedeki \N biçimindeki diziler, düzenli ifadede N'inci yakalama grubuna atıfta bulunur ve \g<groupname> biçimi, groupname adıyla adlandırılmış bir yakalama grubuna atıfta bulunur.
Örnekler
julia> msg = "#Hello# from Julia";
julia> replace(msg, r"#(.+)# from (?<from>\w+)" => s"FROM: \g<from>; MESSAGE: \1")
"FROM: Julia; MESSAGE: Hello"Base.@raw_str — Macro@raw_str -> Stringİçinde yerleşim ve kaçış olmadan bir ham dize oluşturun. Tek istisna, tırnak işaretlerinin hala kaçırılması gerektiğidir. Ters eğik çizgiler, hem tırnak işaretlerini hem de diğer ters eğik çizgileri kaçırır, ancak yalnızca bir dizi ters eğik çizgi bir alıntı karakterinden önce geliyorsa. Böylece, 2n ters eğik çizgi bir alıntı ile takip edildiğinde n ters eğik çizgi ve literalın sonunu kodlar, 2n+1 ters eğik çizgi bir alıntı ile takip edildiğinde n ters eğik çizgi ve bir alıntı karakterini kodlar.
Örnekler
julia> println(raw"\ $x")
\ $x
julia> println(raw"\"")
"
julia> println(raw"\\\"")
\"
julia> println(raw"\\x \\\"")
\\x \"Base.@b_str — Macro@b_strDize değişmez bir bayt (UInt8) vektörü oluşturmak için dize sözdizimi kullanın.
Örnekler
julia> v = b"12\x01\x02"
4-element Base.CodeUnits{UInt8, String}:
0x31
0x32
0x01
0x02
julia> v[2]
0x32Base.Docs.@html_str — Macro@html_str -> Docs.HTMLBir literal string'den bir HTML nesnesi oluşturun.
Örnekler
julia> html"Julia"
HTML{String}("Julia")Base.Docs.@text_str — Macro@text_str -> Docs.TextBir literal string'den bir Text nesnesi oluşturun.
Örnekler
julia> text"Julia"
JuliaBase.isvalid — Methodisvalid(value) -> BoolVerilen değerin türü için geçerli olup olmadığını kontrol eder, bu tür şu anda ya AbstractChar ya da String ya da SubString{String} olabilir.
Örnekler
julia> isvalid(Char(0xd800))
false
julia> isvalid(SubString(String(UInt8[0xfe,0x80,0x80,0x80,0x80,0x80]),1,2))
false
julia> isvalid(Char(0xd799))
trueBase.isvalid — Methodisvalid(T, value) -> BoolVerilen değerin o tür için geçerli olup olmadığını kontrol eder. Türler şu anda ya AbstractChar ya da String olabilir. AbstractChar için değerler AbstractChar türünde veya UInt32 türünde olabilir. String için değerler o türde, SubString{String}, Vector{UInt8} veya bunların bitişik bir alt dizisi olabilir.
Örnekler
julia> isvalid(Char, 0xd800)
false
julia> isvalid(String, SubString("thisisvalid",1,5))
true
julia> isvalid(Char, 0xd799)
trueAlt dizi değerleri için destek Julia 1.6'da eklendi.
Base.isvalid — Methodisvalid(s::AbstractString, i::Integer) -> BoolVerilen indeksin s içindeki bir karakterin kodlamasının başlangıcı olup olmadığını belirten bir predikattir. Eğer isvalid(s, i) doğruysa, s[i] o indekste başlayan karakteri döndürecektir; eğer yanlışsa, s[i] geçersiz bir indeks hatası veya i sınırda ise bir sınır hatası verecektir. isvalid(s, i)'nin O(1) bir fonksiyon olabilmesi için, s'nin kodlaması kendinden senkronize olmalıdır. Bu, Julia'nın genel dize desteği için temel bir varsayımdır.
Ayrıca getindex, iterate, thisind, nextind, prevind, length bakınız.
Örnekler
julia> str = "αβγdef";
julia> isvalid(str, 1)
true
julia> str[1]
'α': Unicode U+03B1 (kategori Ll: Harf, küçük)
julia> isvalid(str, 2)
false
julia> str[2]
HATA: StringIndexError: geçersiz indeks [2], geçerli yakın indeksler [1]=>'α', [3]=>'β'
Yığın izi:
[...]Base.match — Functionmatch(r::Regex, s::AbstractString[, idx::Integer[, addopts]])Düzenli ifade r'nin s içinde ilk eşleşmesini arar ve eşleşmeyi içeren bir RegexMatch nesnesi döner, ya da eşleşme başarısız olursa hiçbir şey döner. Eşleşen alt dizeye m.match ile erişerek ve yakalanan dizilere m.captures ile erişerek ulaşılabilir. İsteğe bağlı idx argümanı, aramaya başlamak için bir indeks belirtir.
Örnekler
julia> rx = r"a(.)a"
r"a(.)a"
julia> m = match(rx, "cabac")
RegexMatch("aba", 1="b")
julia> m.captures
1-element Vector{Union{Nothing, SubString{String}}}:
"b"
julia> m.match
"aba"
julia> match(rx, "cabac", 3) === nothing
trueBase.eachmatch — Functioneachmatch(r::Regex, s::AbstractString; overlap::Bool=false)Düzenli ifade r'nin s içindeki tüm eşleşmelerini arar ve eşleşmeler üzerinde bir yineleyici döndürür. Eğer overlap true ise, eşleşen diziler orijinal dizideki indeksleri örtüşmesine izin verilir, aksi takdirde farklı karakter aralıklarından olmalıdır.
Örnekler
julia> rx = r"a.a"
r"a.a"
julia> m = eachmatch(rx, "a1a2a3a")
Base.RegexMatchIterator{String}(r"a.a", "a1a2a3a", false)
julia> collect(m)
2-element Vector{RegexMatch}:
RegexMatch("a1a")
RegexMatch("a3a")
julia> collect(eachmatch(rx, "a1a2a3a", overlap = true))
3-element Vector{RegexMatch}:
RegexMatch("a1a")
RegexMatch("a2a")
RegexMatch("a3a")Base.RegexMatch — TypeRegexMatch <: AbstractMatchBir dize içinde bulunan bir Regex için tek bir eşleşmeyi temsil eden bir türdür. Genellikle match fonksiyonundan oluşturulur.
match alanı, tüm eşleşen dize parçasını saklar. captures alanı, her bir yakalama grubu için numara ile indekslenmiş alt dizeleri saklar. Yakalama grubu adı ile indekslemek için, tüm eşleşme nesnesi bunun yerine indekslenmelidir; örneklerde gösterildiği gibi. Eşleşmenin başlangıç konumu offset alanında saklanır. offsets alanı, her yakalama grubunun başlangıç konumlarını saklar; 0, yakalanmamış bir grubu belirtir.
Bu tür, Regex'in yakalama grupları üzerinde bir yineleyici olarak kullanılabilir ve her grupta yakalanan alt dizeleri verir. Bu nedenle, bir eşleşmenin yakalamaları parçalanabilir. Eğer bir grup yakalanmamışsa, bir alt dize yerine nothing dönecektir.
RegexMatch nesnesini kabul eden yöntemler iterate, length, eltype, keys, haskey ve getindex için tanımlanmıştır; burada anahtarlar bir yakalama grubunun adları veya numaralarıdır. Daha fazla bilgi için keys'e bakın.
Örnekler
julia> m = match(r"(?<hour>\d+):(?<minute>\d+)(am|pm)?", "11:30 in the morning")
RegexMatch("11:30", hour="11", minute="30", 3=nothing)
julia> m.match
"11:30"
julia> m.captures
3-element Vector{Union{Nothing, SubString{String}}}:
"11"
"30"
nothing
julia> m["minute"]
"30"
julia> hr, min, ampm = m; # yakalama gruplarını yineleme ile parçala
julia> hr
"11"Base.keys — Methodkeys(m::RegexMatch) -> VectorTüm yakalama gruplarının anahtarlarını içeren bir vektör döndürür. Bir anahtar, yakalama grubu eşleşmeyi başaramasa bile dahil edilir. Yani, idx dönen değerde yer alacaktır, hatta m[idx] == nothing olsa bile.
İsimsiz yakalama grupları, indekslerine karşılık gelen tam sayı anahtarlarına sahip olacaktır. İsimli yakalama grupları ise string anahtarlarına sahip olacaktır.
Bu yöntem Julia 1.7'de eklendi
Örnekler
julia> keys(match(r"(?<hour>\d+):(?<minute>\d+)(am|pm)?", "11:30"))
3-element Vector{Any}:
"hour"
"minute"
3Base.isless — Methodisless(a::AbstractString, b::AbstractString) -> BoolDize a dize b'den alfabetik sırada (teknik olarak, Unicode kod noktalarına göre leksikografik sırada) önce gelip gelmediğini test eder.
Örnekler
julia> isless("a", "b")
true
julia> isless("β", "α")
false
julia> isless("a", "a")
falseBase.:== — Method==(a::AbstractString, b::AbstractString) -> Boolİki dizenin karakter karakter (teknik olarak, Unicode kod noktası bazında) eşit olup olmadığını test eder. Eğer dizelerden biri bir AnnotatedString ise, dize özelliklerinin de eşleşmesi gerekir.
Örnekler
julia> "abc" == "abc"
true
julia> "abc" == "αβγ"
falseBase.cmp — Methodcmp(a::AbstractString, b::AbstractString) -> Intİki dizeyi karşılaştır. Her iki dize de aynı uzunluktaysa ve her bir indeksteki karakterler her iki dizede de aynıysa 0 döndür. a, b'nin ön eki ise veya a, b'den alfabetik sırada önce geliyorsa -1 döndür. b, a'nın ön eki ise veya b, a'dan alfabetik sırada önce geliyorsa (teknik olarak, Unicode kod noktalarına göre leksikografik sırada) 1 döndür.
Örnekler
julia> cmp("abc", "abc")
0
julia> cmp("ab", "abc")
-1
julia> cmp("abc", "ab")
1
julia> cmp("ab", "ac")
-1
julia> cmp("ac", "ab")
1
julia> cmp("α", "a")
1
julia> cmp("b", "β")
-1Base.lpad — Functionlpad(s, n::Integer, p::Union{AbstractChar,AbstractString}=' ') -> Strings'yi string'e çevirir ve elde edilen string'i p ile soldan doldurarak n karakter (textwidth) uzunluğunda hale getirir. Eğer s zaten n karakter uzunluğundaysa, eşit bir string döndürülür. Varsayılan olarak boşluklarla doldurur.
Örnekler
julia> lpad("March", 10)
" March"Julia 1.7'de, bu fonksiyon ham karakter (kod noktası) sayısı yerine textwidth kullanacak şekilde değiştirildi.
Base.rpad — Functionrpad(s, n::Integer, p::Union{AbstractChar,AbstractString}=' ') -> Strings'yi string'e çevirir ve elde edilen string'i sağdan p ile doldurarak n karakter (textwidth) uzunluğunda hale getirir. Eğer s zaten n karakter uzunluğundaysa, eşit bir string döndürülür. Varsayılan olarak boşluklarla doldurur.
Örnekler
julia> rpad("March", 20)
"March "Julia 1.7'de, bu fonksiyon ham karakter (kod noktası) sayısı yerine textwidth kullanacak şekilde değiştirildi.
Base.findfirst — Methodfindfirst(pattern::AbstractString, string::AbstractString)
findfirst(pattern::AbstractPattern, string::String)pattern'in string'deki ilk geçişini bulur. findnext(pattern, string, firstindex(s)) ile eşdeğerdir.
Örnekler
julia> findfirst("z", "Hello to the world") # hiçbir şey döndürmez, ancak REPL'de yazdırılmaz
julia> findfirst("Julia", "JuliaLang")
1:5Base.findnext — Methodfindnext(pattern::AbstractString, string::AbstractString, start::Integer)
findnext(pattern::AbstractPattern, string::String, start::Integer)pattern'ın string içinde start konumundan itibaren bir sonraki geçişini bulur. pattern bir dize veya bir düzenli ifade olabilir; bu durumda string String türünde olmalıdır.
Dönüş değeri, eşleşen dizinin bulunduğu indekslerin bir aralığıdır; böylece s[findnext(x, s, i)] == x:
findnext("substring", string, i) == start:stop böylece string[start:stop] == "substring" ve i <= start, veya eşleşmiyorsa nothing.
Örnekler
julia> findnext("z", "Hello to the world", 1) === nothing
true
julia> findnext("o", "Hello to the world", 6)
8:8
julia> findnext("Lang", "JuliaLang", 2)
6:9Base.findnext — Methodfindnext(ch::AbstractChar, string::AbstractString, start::Integer)ch karakterinin start konumundan başlayarak string içinde bir sonraki geçişini bulur.
Bu yöntem en az Julia 1.3 gerektirir.
Örnekler
julia> findnext('z', "Hello to the world", 1) === nothing
true
julia> findnext('o', "Hello to the world", 6)
8Base.findlast — Methodfindlast(pattern::AbstractString, string::AbstractString)pattern'ın string içindeki son geçişini bulur. findprev(pattern, string, lastindex(string)) ile eşdeğerdir.
Örnekler
julia> findlast("o", "Hello to the world")
15:15
julia> findfirst("Julia", "JuliaLang")
1:5Base.findlast — Methodfindlast(ch::AbstractChar, string::AbstractString)Karakter ch'nin string içindeki son geçişini bulur.
Bu yöntem en az Julia 1.3 gerektirir.
Örnekler
julia> findlast('p', "happy")
4
julia> findlast('z', "happy") === nothing
trueBase.findprev — Methodfindprev(pattern::AbstractString, string::AbstractString, start::Integer)pattern'ın string içinde start konumundan başlayarak önceki bir örneğini bulur.
Dönüş değeri, eşleşen dizinin bulunduğu indekslerin bir aralığıdır; böylece s[findprev(x, s, i)] == x:
findprev("substring", string, i) == start:stop böylece string[start:stop] == "substring" ve stop <= i, veya eşleşme yoksa nothing.
Örnekler
julia> findprev("z", "Hello to the world", 18) === nothing
true
julia> findprev("o", "Hello to the world", 18)
15:15
julia> findprev("Julia", "JuliaLang", 6)
1:5Base.occursin — Functionoccursin(needle::Union{AbstractString,AbstractPattern,AbstractChar}, haystack::AbstractString)İlk argümanın ikinci argümanın bir alt dize olup olmadığını belirler. Eğer needle bir düzenli ifade ise, haystack'in bir eşleşme içerip içermediğini kontrol eder.
Örnekler
julia> occursin("Julia", "JuliaLang is pretty cool!")
true
julia> occursin('a', "JuliaLang is pretty cool!")
true
julia> occursin(r"a.a", "aba")
true
julia> occursin(r"a.a", "abba")
falseAyrıca contains bakınız.
occursin(haystack)haystack içinde argümanının geçip geçmediğini kontrol eden bir fonksiyon oluşturun, yani needle -> occursin(needle, haystack) fonksiyonuna eşdeğer bir fonksiyon.
Dönen fonksiyon Base.Fix2{typeof(occursin)} tipindedir.
Bu yöntem Julia 1.6 veya daha yenisini gerektirir.
Örnekler
julia> search_f = occursin("JuliaLang is a programming language");
julia> search_f("JuliaLang")
true
julia> search_f("Python")
falseBase.reverse — Methodreverse(s::AbstractString) -> AbstractStringBir dizeyi tersine çevirir. Teknik olarak, bu işlev bir dizideki kod noktalarını tersine çevirir ve ana kullanımı, özellikle ters düzenli ifade aramaları için ters sıralı dize işleme içindir. s içindeki indeksleri reverse(s) içindeki indekslere ve tersine dönüştürmek için reverseind ve kullanıcı görünür "karakterler" (graphemes) üzerinde işlem yapmak için Unicode modülündeki graphemes'i de inceleyin. Kopya oluşturmadan ters sıralı yineleme için Iterators.reverse de mevcuttur. Özel dize türleri, reverse işlevini kendileri uygulamalıdır ve genellikle aynı tür ve kodlama ile bir dize döndürmelidir. Farklı bir kodlama ile bir dize döndürürlerse, s[reverseind(s,i)] == reverse(s)[i] koşulunu sağlamak için o dize türü için reverseind'i de geçersiz kılmalıdırlar.
Örnekler
julia> reverse("JuliaLang")
"gnaLailuJ"Aşağıdaki örnekler farklı sistemlerde farklı şekilde işlenebilir. Yorumlar, nasıl işlenmeleri gerektiğini belirtir.
Birleştirici karakterler sürpriz sonuçlara yol açabilir:
julia> reverse("ax̂e") # şapka x'in üzerinde, e'nin üzerinde
"êxa"
julia> using Unicode
julia> join(reverse(collect(graphemes("ax̂e")))) # graphemes'i tersine çevirir; şapka x'in üzerinde hem girişte hem de çıkışta
"ex̂a"Base.replace — Methodreplace([io::IO], s::AbstractString, pat=>r, [pat2=>r2, ...]; [count::Integer])Verilen pat desenini s içinde arayın ve her bir örneği r ile değiştirin. Eğer count sağlanmışsa, en fazla count örneği değiştirilir. pat tek bir karakter, bir vektör veya karakterler kümesi, bir dize veya bir düzenli ifade olabilir. Eğer r bir fonksiyonsa, her bir örnek r(s) ile değiştirilir; burada s, eşleşen alt dizedir (eğer pat bir AbstractPattern veya AbstractString ise) veya karakterdir (eğer pat bir AbstractChar veya bir AbstractChar koleksiyonu ise). Eğer pat bir düzenli ifade ise ve r bir SubstitutionString ise, o zaman r içindeki yakalama grubu referansları, karşılık gelen eşleşen metin ile değiştirilir. pat örneklerini string'den kaldırmak için, r'yi boş String ("") olarak ayarlayın.
Dönüş değeri, değişikliklerden sonra yeni bir dizedir. Eğer io::IO argümanı sağlanmışsa, dönüştürülmüş dize bunun yerine io'ya yazılır (dönüş io olur). (Örneğin, bu, önceden tahsis edilmiş bir tampon dizisini yerinde yeniden kullanmak için bir IOBuffer ile birlikte kullanılabilir.)
Birden fazla desen belirtilebilir ve bunlar soldan sağa aynı anda uygulanır, bu nedenle yalnızca bir desen herhangi bir karaktere uygulanır ve desenler yalnızca giriş metnine, değişikliklere değil, uygulanır.
Birden fazla desen desteği 1.7 sürümünü gerektirir.
io::IO argümanı 1.10 sürümünü gerektirir.
Örnekler
julia> replace("Python is a programming language.", "Python" => "Julia")
"Julia is a programming language."
julia> replace("The quick foxes run quickly.", "quick" => "slow", count=1)
"The slow foxes run quickly."
julia> replace("The quick foxes run quickly.", "quick" => "", count=1)
"The foxes run quickly."
julia> replace("The quick foxes run quickly.", r"fox(es)?" => s"bus\1")
"The quick buses run quickly."
julia> replace("abcabc", "a" => "b", "b" => "c", r".+" => "a")
"bca"Base.eachsplit — Functioneachsplit(str::AbstractString, dlm; limit::Integer=0, keepempty::Bool=true)
eachsplit(str::AbstractString; limit::Integer=0, keepempty::Bool=false)str'yi dlm ayırıcılarının bulunduğu yerlerde ayırın ve alt dizelerin üzerinde bir yineleyici döndürün. dlm, findnext fonksiyonunun ilk argümanı olarak izin verilen herhangi bir formatta (yani bir dize, düzenli ifade veya bir fonksiyon olarak) veya tek bir karakter ya da karakterler koleksiyonu olarak olabilir.
dlm belirtilmezse, varsayılan olarak isspace kullanılır.
İsteğe bağlı anahtar kelime argümanları şunlardır:
limit: sonucun maksimum boyutu.limit=0maksimum yoktur (varsayılan)keepempty: boş alanların sonuçta tutulup tutulmayacağı. Varsayılan,dlmargümanı olmadanfalse,dlmargümanı iletrue'dur.
Ayrıca bkz. split.
eachsplit fonksiyonu en az Julia 1.8 gerektirir.
Örnekler
julia> a = "Ma.rch"
"Ma.rch"
julia> b = eachsplit(a, ".")
Base.SplitIterator{String, String}("Ma.rch", ".", 0, true)
julia> collect(b)
2-element Vector{SubString{String}}:
"Ma"
"rch"Base.eachrsplit — Functioneachrsplit(str::AbstractString, dlm; limit::Integer=0, keepempty::Bool=true)
eachrsplit(str::AbstractString; limit::Integer=0, keepempty::Bool=false)str üzerinde dlm ayırıcı(ları) ile bölündüğünde üretilen SubString'lerin bir iteratörünü döndürür ve bunları ters sırayla (sağdan sola) verir. dlm, findprev fonksiyonunun ilk argümanı olarak izin verilen herhangi bir formatta (yani bir dize, tek bir karakter veya bir fonksiyon) veya bir karakter koleksiyonu olabilir.
dlm belirtilmezse, varsayılan olarak isspace kullanılır ve keepempty varsayılan olarak false olur.
İsteğe bağlı anahtar kelime argümanları şunlardır:
- Eğer
limit > 0ise, iteratör en fazlalimit - 1kez bölme yapacak ve geri kalan dizeyi bölmeden döndürecektir.limit < 1bölmelere herhangi bir sınır koymaz (varsayılan). keepempty: iterasyon sırasında boş alanların döndürülüp döndürülmeyeceği. Varsayılan,dlmargümanı olmadanfalse,dlmargümanı iletrue'dur.
split, rsplit ve eachsplit ile karşılaştırıldığında, bu fonksiyon girişteki alt dizeleri sağdan sola doğru iterasyon yapar.
Ayrıca bkz. eachsplit, rsplit.
Bu fonksiyon Julia 1.11 veya daha yenisini gerektirir.
Örnekler
julia> a = "Ma.r.ch";
julia> collect(eachrsplit(a, ".")) == ["ch", "r", "Ma"]
true
julia> collect(eachrsplit(a, "."; limit=2)) == ["ch", "Ma.r"]
trueBase.split — Functionsplit(str::AbstractString, dlm; limit::Integer=0, keepempty::Bool=true)
split(str::AbstractString; limit::Integer=0, keepempty::Bool=false)str'yi dlm ayırıcılarının bulunduğu yerlerde alt dizeler dizisine ayırır. dlm, findnext fonksiyonunun ilk argümanı olarak izin verilen herhangi bir formatta (yani bir dize, düzenli ifade veya bir fonksiyon olarak) veya tek bir karakter ya da karakterler koleksiyonu olarak olabilir.
Eğer dlm belirtilmezse, varsayılan olarak isspace kullanılır.
İsteğe bağlı anahtar kelime argümanları şunlardır:
limit: sonucun maksimum boyutu.limit=0maksimum yoktur anlamına gelir (varsayılan)keepempty: boş alanların sonuçta tutulup tutulmayacağı. Varsayılan,dlmargümanı olmadanfalse,dlmargümanı iletrue'dur.
Ayrıca rsplit, eachsplit ile de bakılabilir.
Örnekler
julia> a = "Ma.rch"
"Ma.rch"
julia> split(a, ".")
2-element Vector{SubString{String}}:
"Ma"
"rch"Base.rsplit — Functionrsplit(s::AbstractString; limit::Integer=0, keepempty::Bool=false)
rsplit(s::AbstractString, chars; limit::Integer=0, keepempty::Bool=true)Dizeyi sonundan başlamak üzere split ile benzer.
Örnekler
julia> a = "M.a.r.c.h"
"M.a.r.c.h"
julia> rsplit(a, ".")
5-element Vector{SubString{String}}:
"M"
"a"
"r"
"c"
"h"
julia> rsplit(a, "."; limit=1)
1-element Vector{SubString{String}}:
"M.a.r.c.h"
julia> rsplit(a, "."; limit=2)
2-element Vector{SubString{String}}:
"M.a.r.c"
"h"Base.strip — Functionstrip([pred=isspace,] str::AbstractString) -> SubString
strip(str::AbstractString, chars) -> SubStringstr'den baştaki ve sondaki karakterleri kaldırır; bu ya chars ile belirtilen karakterler ya da pred fonksiyonunun true döndürdüğü karakterlerdir.
Varsayılan davranış, baştaki ve sondaki boşluk ve ayırıcıları kaldırmaktır: kesin ayrıntılar için isspace bölümüne bakın.
İsteğe bağlı chars argümanı, kaldırılacak karakterleri belirtir: bu tek bir karakter, karakter vektörü veya karakter kümesi olabilir.
Ayrıca lstrip ve rstrip bölümlerine de bakın.
Bir predikat fonksiyonu kabul eden yöntem, Julia 1.2 veya daha yenisini gerektirir.
Örnekler
julia> strip("{3, 5}\n", ['{', '}', '\n'])
"3, 5"Base.lstrip — Functionlstrip([pred=isspace,] str::AbstractString) -> SubString
lstrip(str::AbstractString, chars) -> SubStringstr'den önde bulunan karakterleri kaldırır, ya chars ile belirtilenler ya da pred fonksiyonunun true döndürdüğü karakterler.
Varsayılan davranış, önde bulunan boşluk ve ayırıcıları kaldırmaktır: kesin detaylar için isspace bölümüne bakın.
İsteğe bağlı chars argümanı, kaldırılacak karakterleri belirtir: bu tek bir karakter veya bir karakter vektörü ya da kümesi olabilir.
Ayrıca strip ve rstrip bölümlerine de bakın.
Örnekler
julia> a = lpad("Mart", 20)
" Mart"
julia> lstrip(a)
"Mart"Base.rstrip — Functionrstrip([pred=isspace,] str::AbstractString) -> SubString
rstrip(str::AbstractString, chars) -> SubStringstr'den sonundaki karakterleri kaldırır, ya chars ile belirtilenler ya da pred fonksiyonunun true döndürdüğü karakterler.
Varsayılan davranış, sonundaki boşlukları ve ayırıcıları kaldırmaktır: kesin detaylar için isspace bölümüne bakın.
İsteğe bağlı chars argümanı, kaldırılacak karakterleri belirtir: bu tek bir karakter veya bir karakter vektörü veya kümesi olabilir.
Ayrıca strip ve lstrip ile de bakabilirsiniz.
Örnekler
julia> a = rpad("Mart", 20)
"Mart "
julia> rstrip(a)
"Mart"Base.startswith — Functionstartswith(s::AbstractString, prefix::Union{AbstractString,Base.Chars})prefix ile başlayan s için true döner; prefix bir dize, bir karakter veya karakterlerin bir demeti/vektörü/kümesi olabilir. Eğer prefix bir demet/vektör/küme ise, s'nin ilk karakterinin o kümenin bir parçası olup olmadığını test edin.
Ayrıca endswith, contains bakınız.
Örnekler
julia> startswith("JuliaLang", "Julia")
truestartswith(io::IO, prefix::Union{AbstractString,Base.Chars})Bir IO nesnesinin bir dize, bir karakter veya bir karakterin demeti/vektörü/kümesi olabilen bir ön ek ile başlayıp başlamadığını kontrol eder. Ayrıca bkz. peek.
startswith(prefix)prefix ile başlayan bir argümanın olup olmadığını kontrol eden bir fonksiyon oluşturun, yani y -> startswith(y, prefix) fonksiyonuna eşdeğer bir fonksiyon.
Dönen fonksiyon Base.Fix2{typeof(startswith)} türündedir ve özel yöntemleri uygulamak için kullanılabilir.
Tek argüman startswith(prefix) en az Julia 1.5 gerektirir.
Örnekler
julia> startswith("Julia")("JuliaLang")
true
julia> startswith("Julia")("Ends with Julia")
falsestartswith(s::AbstractString, prefix::Regex)prefix regex desen s'nin başında olup olmadığını kontrol eder ve true döner.
startswith anchoring'i düzenli ifadeye derlemez, bunun yerine anchoring'i PCRE'ye match_option olarak geçirir. Derleme süresi amorti ediliyorsa, occursin(r"^...", s) startswith(s, r"...")'den daha hızlıdır.
Ayrıca occursin ve endswith bakınız.
Bu yöntem en az Julia 1.2 gerektirir.
Örnekler
julia> startswith("JuliaLang", r"Julia|Romeo")
trueBase.endswith — Functionendswith(s::AbstractString, suffix::Union{AbstractString,Base.Chars})suffix ile bitip bitmediğini kontrol etmek için s'yi true döndürür; suffix bir dize, bir karakter veya bir karakterler demeti/vektörü/kümesi olabilir. Eğer suffix bir demet/vektör/küme ise, s'nin son karakterinin bu kümenin bir parçası olup olmadığını test edin.
Ayrıca startswith, contains bakınız.
Örnekler
julia> endswith("Sunday", "day")
trueendswith(suffix)Bir argümanın suffix ile bitip bitmediğini kontrol eden bir fonksiyon oluşturun, yani y -> endswith(y, suffix) fonksiyonuna eşdeğer bir fonksiyon.
Dönen fonksiyon Base.Fix2{typeof(endswith)} türündedir ve özel yöntemleri uygulamak için kullanılabilir.
Tek argümanlı endswith(suffix) en az Julia 1.5 gerektirir.
Örnekler
julia> endswith("Julia")("Ends with Julia")
true
julia> endswith("Julia")("JuliaLang")
falseendswith(s::AbstractString, suffix::Regex)true döndürür eğer s, regex deseni suffix ile bitiyorsa.
endswith, sabitlemeyi düzenli ifadeye derlemez, bunun yerine sabitlemeyi match_option olarak PCRE'ye geçirir. Derleme süresi amorti ediliyorsa, occursin(r"...$", s) endswith(s, r"...")'den daha hızlıdır.
Ayrıca bkz. occursin ve startswith.
Bu yöntem en az Julia 1.2 gerektirir.
Örnekler
julia> endswith("JuliaLang", r"Lang|Roberts")
trueBase.contains — Functioncontains(haystack::AbstractString, needle)haystack içinde needle varsa true döner. Bu, occursin(needle, haystack) ile aynıdır, ancak startswith(haystack, needle) ve endswith(haystack, needle) ile tutarlılık sağlamak için sunulmuştur.
Ayrıca bkz. occursin, in, issubset.
Örnekler
julia> contains("JuliaLang is pretty cool!", "Julia")
true
julia> contains("JuliaLang is pretty cool!", 'a')
true
julia> contains("aba", r"a.a")
true
julia> contains("abba", r"a.a")
falsecontains fonksiyonu en az Julia 1.5 gerektirir.
contains(iğne)Bir argümanın iğne içerip içermediğini kontrol eden bir fonksiyon oluşturun, yani samanlık -> contains(samanlık, iğne) fonksiyonuna eşdeğer bir fonksiyon.
Dönen fonksiyon Base.Fix2{typeof(contains)} tipindedir ve özel yöntemler uygulamak için kullanılabilir.
Base.first — Methodfirst(s::AbstractString, n::Integer)s'ninci n karakterden oluşan bir dize döndürür.
Örnekler
julia> first("∀ϵ≠0: ϵ²>0", 0)
""
julia> first("∀ϵ≠0: ϵ²>0", 1)
"∀"
julia> first("∀ϵ≠0: ϵ²>0", 3)
"∀ϵ≠"Base.last — Methodlast(s::AbstractString, n::Integer)s'nin son n karakterinden oluşan bir dize alır.
Örnekler
julia> last("∀ϵ≠0: ϵ²>0", 0)
""
julia> last("∀ϵ≠0: ϵ²>0", 1)
"0"
julia> last("∀ϵ≠0: ϵ²>0", 3)
"²>0"Base.Unicode.uppercase — Functionuppercase(c::AbstractChar)c'yi büyük harfe dönüştür.
Ayrıca bkz. lowercase, titlecase.
Örnekler
julia> uppercase('a')
'A': ASCII/Unicode U+0041 (kategori Lu: Harf, büyük harf)
julia> uppercase('ê')
'Ê': Unicode U+00CA (kategori Lu: Harf, büyük harf)uppercase(s::AbstractString)Tüm karakterleri büyük harfe dönüştürerek s'yi döndürür.
Ayrıca lowercase, titlecase, uppercasefirst bakınız.
Örnekler
julia> uppercase("Julia")
"JULIA"Base.Unicode.lowercase — Functionküçükharf(c::AbstractChar)c'yi küçük harfe dönüştür.
Ayrıca bkz. büyükharf, başharf.
Örnekler
julia> küçükharf('A')
'a': ASCII/Unicode U+0061 (kategori Ll: Harf, küçük harf)
julia> küçükharf('Ö')
'ö': Unicode U+00F6 (kategori Ll: Harf, küçük harf)lowercase(s::AbstractString)Tüm karakterleri küçük harfe dönüştürerek s'yi döndürür.
Ayrıca bkz. uppercase, titlecase, lowercasefirst.
Örnekler
julia> lowercase("STRINGS AND THINGS")
"strings and things"Base.Unicode.titlecase — Functiontitlecase(c::AbstractChar)c'yi başlık durumuna dönüştür. Bu, çift harfler için büyük harften farklı olabilir, aşağıdaki örneği karşılaştırın.
Ayrıca bkz. uppercase, lowercase.
Örnekler
julia> titlecase('a')
'A': ASCII/Unicode U+0041 (kategori Lu: Harf, büyük harf)
julia> titlecase('dž')
'Dž': Unicode U+01C5 (kategori Lt: Harf, başlık durumu)
julia> uppercase('dž')
'DŽ': Unicode U+01C4 (kategori Lu: Harf, büyük harf)titlecase(s::AbstractString; [wordsep::Function], strict::Bool=true) -> Strings içindeki her kelimenin ilk karakterini büyük harfle başlatır; eğer strict true ise, diğer tüm karakterler küçük harfe dönüştürülür, aksi takdirde olduğu gibi bırakılır. Varsayılan olarak, yeni bir graphem ile başlayan tüm harf dışı karakterler kelime ayırıcı olarak kabul edilir; hangi karakterlerin kelime ayırıcı olarak kabul edileceğini belirlemek için wordsep anahtar kelimesi ile bir predikat geçirilebilir. Sadece s içindeki ilk karakteri büyük harfle başlatmak için uppercasefirst fonksiyonuna da bakın.
Ayrıca uppercase, lowercase, uppercasefirst fonksiyonlarına da bakın.
Örnekler
julia> titlecase("the JULIA programming language")
"The Julia Programming Language"
julia> titlecase("ISS - international space station", strict=false)
"ISS - International Space Station"
julia> titlecase("a-a b-b", wordsep = c->c==' ')
"A-a B-b"Base.Unicode.uppercasefirst — Functionuppercasefirst(s::AbstractString) -> StringS'yi ilk karakterini büyük harfe çevirerek döndürür (teknik olarak Unicode için "başlık durumu"). S'deki her kelimenin ilk karakterini büyük harfe çevirmek için titlecase ile de bakabilirsiniz.
Ayrıca lowercasefirst, uppercase, lowercase, titlecase ile de bakabilirsiniz.
Örnekler
julia> uppercasefirst("python")
"Python"Base.Unicode.lowercasefirst — Functionlowercasefirst(s::AbstractString)İlk karakteri küçük harfe dönüştürülmüş s'yi döndürür.
Ayrıca bkz. uppercasefirst, uppercase, lowercase, titlecase.
Örnekler
julia> lowercasefirst("Julia")
"julia"Base.join — Functionjoin([io::IO,] iterator [, delim [, last]])Herhangi bir iterator'ı tek bir dizeye birleştirir, komşu öğeler arasında verilen ayırıcıyı (varsa) ekler. Eğer last verilmişse, son iki öğe arasında delim yerine kullanılacaktır. iterator'ın her bir öğesi print(io::IOBuffer, x) aracılığıyla bir dizeye dönüştürülür. Eğer io verilmişse, sonuç bir String olarak döndürülmek yerine io'ya yazılır.
Örnekler
julia> join(["apples", "bananas", "pineapples"], ", ", " and ")
"apples, bananas and pineapples"
julia> join([1,2,3,4,5])
"12345"Base.chop — Functionchop(s::AbstractString; head::Integer = 0, tail::Integer = 1)s'den ilk head ve son tail karakterlerini kaldırır. chop(s) çağrısı s'den son karakteri kaldırır. Eğer length(s)'den daha fazla karakter kaldırılması isteniyorsa, boş bir dize döndürülür.
Ayrıca bkz. chomp, startswith, first.
Örnekler
julia> a = "Mart"
"Mart"
julia> chop(a)
"Mar"
julia> chop(a, head = 1, tail = 2)
"ar"
julia> chop(a, head = 5, tail = 5)
""Base.chopprefix — Functionchopprefix(s::AbstractString, prefix::Union{AbstractString,Regex}) -> SubStringprefix'i s'den kaldır. Eğer s, prefix ile başlamıyorsa, s'ye eşit bir string döndürülür.
Ayrıca bkz. chopsuffix.
Bu fonksiyon Julia 1.8 itibarıyla mevcuttur.
Örnekler
julia> chopprefix("Hamburger", "Ham")
"burger"
julia> chopprefix("Hamburger", "hotdog")
"Hamburger"Base.chopsuffix — Functionchopsuffix(s::AbstractString, suffix::Union{AbstractString,Regex}) -> SubStrings'den suffix'i kaldırır. Eğer s, suffix ile bitmiyorsa, s'ye eşit bir dize döndürülür.
Ayrıca chopprefix bakınız.
Bu fonksiyon Julia 1.8 itibarıyla mevcuttur.
Örnekler
julia> chopsuffix("Hamburger", "er")
"Hamburg"
julia> chopsuffix("Hamburger", "hotdog")
"Hamburger"Base.chomp — Functionchomp(s::AbstractString) -> SubStringBir dize üzerindeki tek bir son satır sonunu kaldırır.
Ayrıca bkz. chop.
Örnekler
julia> chomp("Hello\n")
"Hello"Base.thisind — Functionthisind(s::AbstractString, i::Integer) -> IntEğer i, s içinde sınırlar içindeyse, i'nin parçası olduğu karakterin kodlama kod biriminin başlangıç indeksini döndür. Başka bir deyişle, eğer i bir karakterin başlangıcıysa, i'yi döndür; eğer i bir karakterin başlangıcı değilse, bir karakterin başlangıcına kadar geri sar ve o indeksi döndür. Eğer i, 0 veya ncodeunits(s)+1'e eşitse, i'yi döndür. Diğer tüm durumlarda BoundsError fırlat.
Örnekler
julia> thisind("α", 0)
0
julia> thisind("α", 1)
1
julia> thisind("α", 2)
1
julia> thisind("α", 3)
3
julia> thisind("α", 4)
HATA: BoundsError: 2-kod birimlik String'e [4] indeksinde erişim denemesi
[...]
julia> thisind("α", -1)
HATA: BoundsError: 2-kod birimlik String'e [-1] indeksinde erişim denemesi
[...]Base.nextind — Methodnextind(str::AbstractString, i::Integer, n::Integer=1) -> IntDurum
n == 1Eğer
isiçinde geçerliyse,iindeksinden sonra başlayan karakterin başlangıç indeksini döndür. Başka bir deyişle, eğeribir karakterin başlangıcıysa, bir sonraki karakterin başlangıcını döndür; eğeribir karakterin başlangıcı değilse, bir karakterin başlangıcına kadar ilerle ve o indeksi döndür. Eğeri0'a eşitse1döndür. Eğerigeçerli bir indeksse amalastindex(str)'ten büyük veya eşitsencodeunits(str)+1döndür. Aksi takdirdeBoundsErrorfırlatılır.Durum
n > 1n==1içinnextinduygulamak gibi davranır. Tek fark, eğerno kadar büyükse kinextinduygulamakncodeunits(str)+1'e ulaşırsa, kalan her iterasyon döndürülen değeri1artırır. Bu, bu durumdanextind'inncodeunits(str)+1'den büyük bir değer döndürebileceği anlamına gelir.Durum
n == 0iyalnızcasiçinde geçerli bir indeksse veya0'a eşitse döndürülür. Aksi takdirdeStringIndexErrorveyaBoundsErrorfırlatılır.
Örnekler
julia> nextind("α", 0)
1
julia> nextind("α", 1)
3
julia> nextind("α", 3)
HATA: BoundsError: [3] indeksinde 2-kod bir String'e erişim denemesi
[...]
julia> nextind("α", 0, 2)
3
julia> nextind("α", 1, 2)
4Base.prevind — Methodprevind(str::AbstractString, i::Integer, n::Integer=1) -> IntDurum
n == 1Eğer
isiçinde geçerliyse,iindeksinden önce başlayan karakterin başlangıç indeksini döndür. Başka bir deyişle, eğeribir karakterin başlangıcıysa, önceki karakterin başlangıcını döndür; eğeribir karakterin başlangıcı değilse, bir karakterin başlangıcına kadar geri sar ve o indeksi döndür. Eğeri1'e eşitse0döndür. Eğerincodeunits(str)+1'e eşitselastindex(str)döndür. Aksi takdirdeBoundsErrorfırlatılır.Durum
n > 1n==1içinprevinduygulamak gibi davranır. Tek fark, eğerno kadar büyükse kiprevinduygulamak0'a ulaşırsa, her kalan iterasyon döndürülen değeri1azaltır. Bu durumdaprevindnegatif bir değer döndürebilir.Durum
n == 0iyalnızcastriçinde geçerli bir indeksse veyancodeunits(str)+1'e eşitse döndürülür. Aksi takdirdeStringIndexErrorveyaBoundsErrorfırlatılır.
Örnekler
julia> prevind("α", 3)
1
julia> prevind("α", 1)
0
julia> prevind("α", 0)
HATA: BoundsError: 2-kod bir String'e [0] indeksinden erişim denemesi
[...]
julia> prevind("α", 2, 2)
0
julia> prevind("α", 2, 3)
-1Base.Unicode.textwidth — Functiontextwidth(c)Bir karakteri yazdırmak için gereken sütun sayısını verir.
Örnekler
julia> textwidth('α')
1
julia> textwidth('⛵')
2textwidth(s::AbstractString)Bir dizeyi yazdırmak için gereken sütun sayısını verir.
Örnekler
julia> textwidth("March")
5Base.isascii — Functionisascii(c::Union{AbstractChar,AbstractString}) -> BoolBir karakterin ASCII karakter setine ait olup olmadığını veya bir dizi içindeki tüm elemanlar için bunun doğru olup olmadığını test eder.
Örnekler
julia> isascii('a')
true
julia> isascii('α')
false
julia> isascii("abc")
true
julia> isascii("αβγ")
falseÖrneğin, isascii fonksiyonu filter veya replace için bir predikat fonksiyonu olarak kullanılabilir; sırasıyla ASCII olmayan karakterleri kaldırmak veya değiştirmek için:
julia> filter(isascii, "abcdeγfgh") # ASCII olmayan karakterleri at
"abcdefgh"
julia> replace("abcdeγfgh", !isascii=>' ') # ASCII olmayan karakterleri boşluklarla değiştir
"abcde fgh"isascii(cu::AbstractVector{CU}) where {CU <: Integer} -> BoolVektördeki tüm değerlerin ASCII karakter kümesine (0x00 ile 0x7f arasında) ait olup olmadığını test eder. Bu fonksiyon, hızlı bir ASCII kontrolüne ihtiyaç duyan diğer string uygulamaları tarafından kullanılmak üzere tasarlanmıştır.
Base.Unicode.iscntrl — Functioniscntrl(c::AbstractChar) -> BoolBir karakterin kontrol karakteri olup olmadığını test eder. Kontrol karakterleri, Unicode'un Latin-1 alt kümesinin yazdırılamayan karakterleridir.
Örnekler
julia> iscntrl('\x01')
true
julia> iscntrl('a')
falseBase.Unicode.isdigit — Functionisdigit(c::AbstractChar) -> BoolBir karakterin ondalık rakam (0-9) olup olmadığını test eder.
Ayrıca bkz: isletter.
Örnekler
julia> isdigit('❤')
false
julia> isdigit('9')
true
julia> isdigit('α')
falseBase.Unicode.isletter — Functionisletter(c::AbstractChar) -> BoolBir karakterin harf olup olmadığını test eder. Bir karakter, Unicode genel kategorisi Harf'e ait olduğunda, yani kategori kodu 'L' ile başlayan bir karakter olduğunda harf olarak sınıflandırılır.
Ayrıca bkz: isdigit.
Örnekler
julia> isletter('❤')
false
julia> isletter('α')
true
julia> isletter('9')
falseBase.Unicode.islowercase — Functionislowercase(c::AbstractChar) -> BoolBir karakterin küçük harf olup olmadığını test eder (Unicode standardının Lowercase türetilmiş özelliğine göre).
Ayrıca isuppercase bakınız.
Örnekler
julia> islowercase('α')
true
julia> islowercase('Γ')
false
julia> islowercase('❤')
falseBase.Unicode.isnumeric — Functionisnumeric(c::AbstractChar) -> BoolBir karakterin sayısal olup olmadığını test eder. Bir karakter, Unicode genel kategorisi Sayı'ya ait olduğunda sayısal olarak sınıflandırılır, yani kategori kodu 'N' ile başlayan bir karakterdir.
Bu geniş kategori, ¾ ve ௰ gibi karakterleri içerir. Bir karakterin 0 ile 9 arasında bir ondalık rakam olup olmadığını kontrol etmek için isdigit kullanın.
Örnekler
julia> isnumeric('௰')
true
julia> isnumeric('9')
true
julia> isnumeric('α')
false
julia> isnumeric('❤')
falseBase.Unicode.isprint — Functionisprint(c::AbstractChar) -> BoolBir karakterin yazdırılabilir olup olmadığını, boşluklar dahil, ancak kontrol karakterleri hariç test eder.
Örnekler
julia> isprint('\x01')
false
julia> isprint('A')
trueBase.Unicode.ispunct — Functionispunct(c::AbstractChar) -> BoolBir karakterin Unicode genel kategorisi Noktalama işaretine ait olup olmadığını test eder, yani kategori kodu 'P' ile başlayan bir karakterdir.
Örnekler
julia> ispunct('α')
false
julia> ispunct('/')
true
julia> ispunct(';')
trueBase.Unicode.isspace — Functionisspace(c::AbstractChar) -> BoolBir karakterin herhangi bir boşluk karakteri olup olmadığını test eder. ASCII karakterleri '\t', '\n', '\v', '\f', '\r' ve ' ', Latin-1 karakteri U+0085 ve Unicode kategorisi Zs'deki karakterleri içerir.
Örnekler
julia> isspace('\n')
true
julia> isspace('\r')
true
julia> isspace(' ')
true
julia> isspace('\x20')
trueBase.Unicode.isuppercase — Functionisuppercase(c::AbstractChar) -> BoolBir karakterin büyük harf olup olmadığını test eder (Unicode standardının Uppercase türetilmiş özelliğine göre).
Ayrıca islowercase bakınız.
Örnekler
julia> isuppercase('γ')
false
julia> isuppercase('Γ')
true
julia> isuppercase('❤')
falseBase.Unicode.isxdigit — Functionisxdigit(c::AbstractChar) -> BoolBir karakterin geçerli bir onaltılık basamak olup olmadığını test eder. Bunun 0x ön eki gibi standartta x'i içermediğini unutmayın.
Örnekler
julia> isxdigit('a')
true
julia> isxdigit('x')
falseBase.escape_string — Functionescape_string(str::AbstractString[, esc]; keep = ())::AbstractString
escape_string(io, str::AbstractString[, esc]; keep = ())::NothingGeleneksel C ve Unicode kaçış dizilerinin genel kaçışı. İlk form kaçış dizisini döndürür, ikinci form sonucu ioya yazdırır.
Ters eğik çizgiler (\) çift ters eğik çizgi ile ("\\") kaçırılır. Yazdırılamayan karakterler ya standart C kaçış kodlarıyla, NUL için "\0" (eğer belirsiz değilse), unicode kod noktası ("\u" ön eki) veya onaltılık ("\x" ön eki) ile kaçırılır.
İsteğe bağlı esc argümanı, ayrıca ters eğik çizgi ile kaçırılması gereken herhangi bir ek karakteri belirtir (" de ilk formda varsayılan olarak kaçırılır).
keep argümanı, olduğu gibi tutulması gereken karakterlerin bir koleksiyonunu belirtir. Burada esc önceliklidir.
Ayrıca unescape_string ters işlem için bakınız.
keep argümanı Julia 1.7 itibarıyla mevcuttur.
Örnekler
julia> escape_string("aaa\nbbb")
"aaa\\nbbb"
julia> escape_string("aaa\nbbb"; keep = '\n')
"aaa\nbbb"
julia> escape_string("\xfe\xff") # geçersiz utf-8
"\\xfe\\xff"
julia> escape_string(string('\u2135','\0')) # belirsiz değil
"ℵ\\0"
julia> escape_string(string('\u2135','\0','0')) # \0 belirsiz olurdu
"ℵ\\x000"Base.escape_raw_string — Functionescape_raw_string(s::AbstractString, delim='"') -> AbstractString
escape_raw_string(io, s::AbstractString, delim='"')Ham bir dizeyi ham dize literalleri için ayrıştırma sırasında kullanılan şekilde kaçış yapar. Girdi dizesindeki her çift tırnak (") karakteri için s (veya belirtilmişse delim), bu fonksiyon önceki ters eğik çizgi (\) karakterlerinin sayısını n olarak sayar ve ardından n'den 2n+1'e kadar ters eğik çizgilerin sayısını artırır (n = 0 için bile). Ayrıca, dize sonundaki ters eğik çizgi dizisini de iki katına çıkarır.
Bu kaçış kuralı, ham dizelerde ve diğer standart dışı dize literallerinde kullanılır. (Ayrıca, Microsoft C/C++ derleyici çalışma zamanının bir komut satırı dizesini argv[] dizisine ayrıştırırken beklediği kaçış kuralıdır.)
Ayrıca escape_string bakınız.
Base.unescape_string — Functionunescape_string(str::AbstractString, keep = ())::AbstractString
unescape_string(io, s::AbstractString, keep = ())::NothingGeleneksel C ve Unicode kaçış dizilerinin genel çözülmesi. İlk form, kaçış dizisini döndürür, ikincisi sonucu io'ya yazdırır. keep argümanı, olduğu gibi tutulacak karakterlerin (ve ters eğik çizgilerin) bir koleksiyonunu belirtir.
Aşağıdaki kaçış dizileri tanınır:
- Kaçış ters eğik çizgi (
\\) - Kaçış çift tırnak (
\") - Standart C kaçış dizileri (
\a,\b,\t,\n,\v,\f,\r,\e) - Unicode BMP kod noktaları (
\uile 1-4 ardışık onaltılık basamak) - Tüm Unicode kod noktaları (
\Uile 1-8 ardışık onaltılık basamak; maksimum değer = 0010ffff) - Onaltılık baytlar (
\xile 1-2 ardışık onaltılık basamak) - Sekizli baytlar (
\ile 1-3 ardışık sekizli basamak)
Ayrıca escape_string bakınız.
Örnekler
julia> unescape_string("aaa\\nbbb") # C kaçış dizisi
"aaa\nbbb"
julia> unescape_string("\\u03c0") # unicode
"π"
julia> unescape_string("\\101") # sekizli
"A"
julia> unescape_string("aaa \\g \\n", ['g']) # `keep` argümanını kullanma
"aaa \\g \n"AnnotatedStrings
AnnotatedStrings API'si deneysel olarak kabul edilmektedir ve Julia sürümleri arasında değişiklik göstermesi muhtemeldir.
Base.AnnotatedString — TypeAnnotatedString{S <: AbstractString} <: AbstractStringMetadata içeren, anotasyonlu bölgeler şeklinde bir dize.
Daha spesifik olarak, bu, sarılı dize içindeki bölgelerin etiketli değerlerle anotasyonlanmasına izin veren herhangi bir AbstractString etrafında basit bir sargıdır.
C
┌──────┸─────────┐
"bu bir örnek anotasyonlu dizedir"
└──┰────────┼─────┘ │
A └─────┰─────────┘
BYukarıdaki diyagram, üç aralığın anotasyonlandığı bir AnnotatedString'i temsil etmektedir (etiketleri A, B ve C). Her anotasyon bir etiket (Symbol) ve bir değer (Any) tutar. Bu üç bilgi, @NamedTuple{region::UnitRange{Int64}, label::Symbol, value} olarak tutulur.
Etiketlerin benzersiz olması gerekmez, aynı bölge aynı etiketle birden fazla anotasyon tutabilir.
Genel olarak AnnotatedString'ler için yazılan kod, aşağıdaki özellikleri korumalıdır:
- Bir anotasyonun hangi karakterlere uygulandığı
- Her karakter için anotasyonların uygulandığı sıra
AnnotatedString'lerin belirli kullanımlarıyla ek anlamlar getirilebilir.
Bu kuralların bir sonucu olarak, aynı etiket ve değerlere sahip bitişik, ardışık yerleştirilmiş anotasyonlar, birleşik aralığı kapsayan tek bir anotasyona eşdeğerdir.
Ayrıca AnnotatedChar, annotatedstring, annotations ve annotate! ile de bakılabilir.
Yapıcılar
AnnotatedString(s::S<:AbstractString) -> AnnotatedString{S}
AnnotatedString(s::S<:AbstractString, annotations::Vector{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}})Bir AnnotatedString, annotatedstring ile de oluşturulabilir; bu, string gibi çalışır ancak argümanlarda mevcut olan herhangi bir anotasyonu korur.
Örnekler
julia> AnnotatedString("bu bir örnek anotasyonlu dizedir",
[(1:18, :A => 1), (12:28, :B => 2), (18:35, :C => 3)])
"bu bir örnek anotasyonlu dizedir"Base.AnnotatedChar — TypeAnnotatedChar{S <: AbstractChar} <: AbstractCharA Char with annotations.
More specifically, this is a simple wrapper around any other AbstractChar, which holds a list of arbitrary labelled annotations (@NamedTuple{label::Symbol, value}) with the wrapped character.
See also: AnnotatedString, annotatedstring, annotations, and annotate!.
Constructors
AnnotatedChar(s::S) -> AnnotatedChar{S}
AnnotatedChar(s::S, annotations::Vector{@NamedTuple{label::Symbol, value}})Examples
julia> AnnotatedChar('j', :label => 1)
'j': ASCII/Unicode U+006A (category Ll: Letter, lowercase)Base.annotatedstring — Functionannotatedstring(values...)Herhangi bir sayıda values kullanarak bir AnnotatedString oluşturur ve bunların print edilmiş temsilini kullanır.
Bu, string gibi çalışır, ancak mevcut olan herhangi bir notasyonu (AnnotatedString veya AnnotatedChar değerleri şeklinde) korumaya özen gösterir.
Ayrıca bkz. AnnotatedString ve AnnotatedChar.
Örnekler
julia> annotatedstring("şimdi bir AnnotatedString")
"şimdi bir AnnotatedString"
julia> annotatedstring(AnnotatedString("notlu", [(1:9, :label => 1)]), ", ve notsuz")
"notlu, ve notsuz"Base.annotations — Functionannotations(str::Union{AnnotatedString, SubString{AnnotatedString}},
[position::Union{Integer, UnitRange}]) ->
Vector{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}}
`str` için geçerli olan tüm notları alın. `position` sağlanırsa, yalnızca `position` ile örtüşen notlar döndürülecektir.
Notlar, uygulandıkları bölgelerle birlikte, bölge–not çiftleri şeklinde bir vektör olarak sağlanır.
[`AnnotatedString`](@ref) belgelerinde belgelenen anlamlara uygun olarak, döndürülen notların sırası, uygulandıkları sırayı yansıtır.
Ayrıca bkz: [`annotate!`](@ref).annotations(chr::AnnotatedChar) -> Vector{@NamedTuple{label::Symbol, value}}chr'nin tüm anotasyonlarını, anotasyon çiftleri vektörü biçiminde alın.
Base.annotate! — Functionannotate!(str::AnnotatedString, [range::UnitRange{Int}], label::Symbol, value)
annotate!(str::SubString{AnnotatedString}, [range::UnitRange{Int}], label::Symbol, value)Bir str (veya tüm dize) için etiketli bir değer (label => value) ile bir range'i anotlayın. Mevcut label anotasyonlarını kaldırmak için nothing değerini kullanın.
str üzerinde anotasyonların uygulanma sırası anlamsal olarak önemlidir; bu, AnnotatedString içinde açıklanmıştır.
annotate!(char::AnnotatedChar, label::Symbol, value::Any)char'ı label => value çifti ile anotlayın.