Dize manipülasyonu, yazılım geliştirmede temeldir; sonuçta çoğu programlama dili bir dizi türü sağlar. Dize, bir karakter dizisidir: harfler, sayılar ve semboller.
Dize manipülasyonu, metin işleme ve veri analizinden web geliştirmeye kadar çeşitli uygulamalar için kullanışlıdır. Popüler dize işleme işlemleri birleştirme, veri doğrulama, çıkarma ve biçimlendirmedir. Go, standart kitaplıkta "dizeler" adlı bir dize işleme paketi sağlar.
Dizeler Paketi
bu Teller paketi, dize işleme ve diğer işlemler için çeşitli yararlı işlevler sağlar. Paket, alt dizi işlemleri, kırpma, dizeleri karşılaştırma, dizi dönüştürme, dizi oluşturma, bölme ve daha fazlası için işlevsellik içerir.
İçe aktarma listenizde paket adını belirterek dize paketini içe aktarabilirsiniz.
içe aktarmak"Teller"
Alt Dizileri Aramak
bu Teller paketi, alt dizileri aramak için üç işlev sağlar:
içerir işlev, İçerirHerhangi işlevi ve İçindekilerRune işlev.bu içerir işlev, belirtilen dizginin alt dizgiyi içerip içermediğini kontrol eder. bu İçerirHerhangi işlev, dizenin alt dizide herhangi bir karakter içerip içermediğini kontrol eder ve İçindekilerRune işlev, dizenin bir rune (bir Unicode karakter) içerip içermediğini kontrol eder.
içe aktarmak (
"fmt"
"Teller"
)işlevana() {
birDize := "Selam Dünya!"
alt dizi := "Dünya"
karakterler := "aeiou"
Rune := 'Ö'
fmt. Println (dizeler. İçerir (aString, alt dize)) // Çıktı: doğru
fmt. Println (dizeler. İçerirAny (aString, karakterler)) // Çıktı: doğru
fmt. Println (dizeler. İçerirRune (aString, aRune)) // Çıktı: doğru
}
Bir alt dizenin dizinini şu şekilde alabilirsiniz: dizin, DizinHerhangi, IndexByte, Ve IndexFunc fonksiyonlar. bu dizin işlev, verilen başka bir dizede bulunuyorsa, bir alt dizenin dizinini döndürür. bu DizinHerhangi işlev, ilk örneğinin dizinini döndürür bir Unicode kod noktası veya -1 karakterlerden hiçbiri mevcut değilse.
içe aktarmak (
"fmt"
"Teller"
)işlevana() {
birDize := "Selam Dünya!"
alt dizi := "dünya"
karakter := "dünya"
byteKarakter := bayt('Ö')
Rune := rün('Ö')fmt. Println (dizeler. Dizin (aString, alt dize)) // Çıktı: 7
fmt. Println (dizeler. IndexAny (aString, karakter)) // Çıktı: 7
fmt. Println (dizeler. IndexByte (aString, byteCharacter)) // Çıktı: 4
f := işlev(R rün)bool {
geri dönmek r == 'Ö'
}
fmt. Println (dizeler. IndexFunc (aString, f)) // Çıktı: 4
fmt. Println (dizeler. IndexRune (aString, aRune)) // Çıktı: 4
}
IndexByte dizedeki bayt karakterinin ilk örneğinin dizinini döndürür veya -1. bu IndexFunc işlevi, dizini belirli bir işlevi karşılayan ilk Unicode noktasının dizesine döndürür. Son olarak, DizinRune işlevi, runenin Unicode kod noktasının ilk örneğinin dizinini döndürür.
Go'da Alt Dizeleri Değiştirme
bu Yer değiştirmek Ve Hepsini değiştir işlev, alt dizelerin değiştirilmesine yardımcı olur. bu Yer değiştirmek işlev dizeyi, orijinal alt dizeyi ve değiştirmeyi ve birkaç değiştirmeyi alır. bu Hepsini değiştir işlev yalnızca dizeyi, ilk alt dizeyi ve değiştirmeyi alır.
içe aktarmak (
"fmt"
"Teller"
)
işlevana() {
Dize := "Bu, değiştirilecek bir test dizisidir."
fmt. Println (dizeler. Değiştir (String, "dır-dir", "oldu", 1))
fmt. Println (dizeler. Değiştir (String, "dır-dir", "oldu", -1))
fmt. Println (dizeler. Tümünü Değiştir (dize, "dır-dir", "oldu"))
}
Dize içindeki her oluşumu değiştirmek için hem replace hem de replaceall kullanabileceğinize dikkat edin.
Dizeleri Bölme ve Birleştirme
bu Teller paket içerir Bölmek, Ayrıldıktan Sonra, BölSonraN, Ve BölünmüşN dizelerin bir dilimini döndüren dizeleri bölme işlevleri.
bu Bölmek yöntem belirtilen bir sınırlayıcıya göre böler. Benzer Bölmek yöntem, Ayrıldıktan Sonra yöntem dizeyi böler, ancak sonuçlarında ayırıcıyı içerir.
içe aktarmak (
"fmt"
"Teller"
)işlevana() {
:= "Bu, bölünecek bir test dizisidir."
fmt. Println (dizeler. Bölünmüş (ler, " "))
fmt. Println (dizeler. Ayrıldıktan Sonra (ler, " "))
fmt. Println (dizeler. BölSonraN(ler, " ", 3))
fmt. Println (dizeler. Bölünmüş N(ler, " ", 3))
}
bu BölünmüşSonraN yöntemi şuna benzer: Ayrıldıktan Sonra işlevin dizeyi belirtilen maksimum alt dizelere ayırması dışında. bu BölünmüşN yöntem, dizeyi, alt dizelerdeki ayırıcıyı dahil etmeden belirtilen bir maksimum sayıya böler.
İle dizeleri birleştirebilirsiniz Katılmak işlevi Teller paket. bu Katılmak işlev bir dilim ve bir sınırlayıcı alır.
içe aktarmak (
"fmt"
"Teller"
)
işlevana() {
fmt. Println (dizeler. Katılmak([]sicim{"Merhaba", "Dünya"}, ":"))
// Çıktı: "Merhaba: Dünya"
}
Dize Durumunu Değiştirme
Dize büyük/küçük harf durumunu değiştirmek, aşağıdakiler de dahil olmak üzere birçok görev için kullanışlıdır: belgelerle çalışmak. kullanabilirsiniz Daha düşük küçük harf işlevi, ToUpper büyük harf için işlev ve ToTitle başlık büyük/küçük harf işlevi.
içe aktarmak (
"fmt"
"Teller"
)işlevana() {
:= "Bu bir test dizisidir."
fmt. Println (dizeler. ToLower (ler)) // bu bir test dizisidir.
fmt. Println (dizeler. ToUpper (lar)) // BU BİR TEST DİZİSİDİR.
fmt. Println (dizeler. ToTitle(lar)) // BU BİR TEST DİZİSİDİR.
}
Go'da Dize Oluşturma
Dize oluşturucular, Go'da verimli birleştirme sağlayan bir türdür. bu bayt. Tampon type, yaygın olarak kullanılan dize oluşturuculardan biridir. bu bayt. Tampon Yöntem, işlemler için okuma ve yazma yöntemleriyle büyütülebilir bir bayt arabelleği uygular ve yeni kopyalar oluşturmaya gerek kalmadan verimli dize eklemelerine izin verir. + operasyon ve Katılmak işlev.
içe aktarmak (
"fmt"
"Teller"
)işlevana() {
var b dizeleri. Oluşturucu// Oluşturucuya bazı dizeler yaz
B. Dizeyi Yaz("Bu ")
B. Dizeyi Yaz("dır-dir ")
B. Dizeyi Yaz("A ")
B. Dizeyi Yaz("Ölçek ")
B. Dizeyi Yaz("sicim.")// Oluşturucunun uzunluğunu al
fmt. Baskı (d. Len())// Oluşturucuyu bir dizgeye dönüştür
dizi := b. Sicim()
fmt. Yazdır (str)// Oluşturucuyu sıfırla
B. Sıfırla()// Oluşturucuya biraz daha dize yaz
B. Dizeyi Yaz("Bu ")
B. Dizeyi Yaz("dır-dir ")
B. Dizeyi Yaz("bir diğer ")
B. Dizeyi Yaz("Ölçek ")
B. Dizeyi Yaz("sicim.")// Oluşturucunun kapasitesini alın
fmt. Baskı (d. kapak())
// Oluşturucuyu tekrar bir dizgeye dönüştür
dizi = b. Sicim()
fmt. Yazdır (str)
}
bu ana işlevini nasıl kullanabileceğinizi gösterir. Teller. Oluşturucu verimli dizi oluşturma için yazın. bu Yazma dizesi yöntemi Teller. Oluşturucu type dizi dizisini birbirine genişletir ve Len method yerleşik dizenin uzunluğunu döndürür.
bu Sicim yöntem, oluşturucunun içeriğini bir dizeye dönüştürür ve Sıfırla yöntem, oluşturucuyu ek dize oluşturma için sıfırlar.
bu kap yöntem oluşturucunun kapasitesini döndürür. Bu, Go'nun dize için ayırdığı geçerli alandır.
Go'da Tel Kırpma
bu Teller paket ayrıca dizeleri kırpmak için işlevsellik sağlar. kırp, sol kırp, Trim Önek, KırpmaSağ, TrimSpace, Ve KırpmaEki fonksiyonlar.
içe aktarmak (
"Teller"
"fmt"
)işlevana() {
// tam dizi
:= "Selam Dünya!"// kırpma için eleman
önek := "Merhaba"
son ek := "Dünya!"// bir dizgiyi belirtilen trim setine göre kırpıyoruz
fmt. Println (dizeler. Kırp (lar, "!"))// dizenin başındaki ve sonundaki boşlukları keser
fmt. Println (dizeler. Kırpma Alanı (lar))// sol diziden belirtilen kırpma seti ile kırpılır
fmt. Println (dizeler. TrimLeft (ler, "Merhaba"))// sağ diziden belirtilen kırpma seti ile kırpılır
fmt. Println (dizeler. TrimSağ (lar, "Dünya!"))// bir öneki keser
fmt. Println (dizeler. TrimPrefix (s, önek))
// belirli bir soneki keser
fmt. Println (dizeler. TrimEki (s, sonek))
}
bu ana işlevi, kırpma için işlevleri nasıl kullanabileceğinizi gösterir. Farklı işlevler S çeşitli şekillerde dize:
Dizeleri Go'da Biçimlendirebilirsiniz
Go standart kitaplığı ayrıca dize formatlaması için fmt paketini sağlar. fmt paketi, Go'da verimli dize biçimlendirmesi için C stili biçimlendirme fiillerini kullanır.