Golang Notlarım 2
Golang bilgilerimize bilgi katmaya devam ediyoruz.
Stringler üzerinde nasıl değişikler yapabileceğimizi, stringlerde aradığımız kelimeleri/karakterleri/sayıları içerip/içermediğini nasıl kontrol edeceğimizi, içeriyorsa indexlerini nasıl bulacağımızı ve regex kullanımlarını göstereceğim.
Golang Trim Kullanımı
Golang ile string üzerinde değişiklik yapmak için hangi fonksiyonları kullanacağız bakalım…
Öncelikle trim/replaceAll fonksiyonlarını kullanmak için “strings” paketini import etmemiz gerekiyor. Daha sonra bakalım işimize hangi trim fonksiyonu yarayacak…
Text belirleyelim ve onun üzerinden örnekler ile anlatmak istiyorum.
text := “//go/öğreniyoruz//”
- Trim
func Trim(text string, kesilecekText string) string
Trim fonksiyonu ile; textin başında ve sonunda bulunan trim yapacağınız kelime/karakterleri kırpabilirsiniz.
strings.Trim(text, “/”)
2. TrimLeft func TrimLeft(text string, kesilecekText string) string
TrimLeft fonksiyonu ile; textin solunda bulunan trim yapacağınız kelime/karakterleri kırpabilirsiniz.
strings.TrimLeft(text, “/”)
3. TrimRight func TrimRight(text string, kesilecekText string) string
TrimRight fonksiyonu ile; textin sağında bulunan trim yapacağınız kelime/karakterleri kırpabilirsiniz.
strings.TrimRight(text, “/”)
4. TrimSuffix func TrimSuffix(text, kesilecekText string) string
TrimSuffix fonksiyonu ile; textin sonunda bulunan trim yapacağınız son kelime/karakteri kırpabilirsiniz.
strings.TrimSuffix(text, “/”)
5. TrimPrefix func TrimPrefix(text, kesilecekText string) string
TrimPrefix fonksiyonu ile; textin başında bulunan trim yapacağınız ilk kelime/karakteri kırpabilirsiniz.
strings.TrimPrefix(text, “/”)
6. TrimSpace func TrimSpace(text string) string
TrimSpace fonksiyonu ile; textin başında ve sonunda bulunan boşukları kırpabilirsiniz.
fmt.Println(“ TrimSpace: “, strings.TrimSpace(text))
7. ReplaceAll func ReplaceAll(text string, eskiKarakter string, yeniKarakter string) string
Örnek textimiz içindeki “/” karakterlerinin hepsini “_” karakterine çevirmek istersek
strings.ReplaceAll(text, “/”, “_”)
kullanabilirsiniz.
Sizin textinizde bulunan herhangi bir karakteri başka bir karaktere çevirmek isterseniz ya da stringdeki boşukları silmek isterseniz ReplaceAll fonksiyonunu kullabilirsiniz.
VsCode ile yukarıda bahsettiğim örnek fonksiyonları çalıştırdım. Bakalım çıktı nasıl olacak :)
Çıktı:
Kolaylık olması açısından kodların kopyasını alabilirsiniz :)
package mainimport (
“fmt”
“strings”
)func main() {
text := “//go/öğreniyoruz//”
fmt.Println(“ Text: “, text)
fmt.Println(“ Trim: “, strings.Trim(text, “/”))
fmt.Println(“ TrimLeft: “, strings.TrimLeft(text, “/”))
fmt.Println(“ TrimRight: “, strings.TrimRight(text, “/”))
fmt.Println(“TrimSuffix: “, strings.TrimSuffix(text, “/”))
fmt.Println(“TrimPrefix: “, strings.TrimPrefix(text, “/”))
fmt.Println(“ReplaceAll: “, strings.ReplaceAll(text, “/”, “_”))
text = “ go öğreniyoruz “
fmt.Println(“ Text: “, text)
fmt.Println(“ TrimSpace: “, strings.TrimSpace(text))
}
Golang Index Kullanımı
String içerisinde geçen bir karakterin indexini nasıl bulacağımızdan bahsedeceğim. İki fonksiyon üzerinden ilerleyeceğim.
2. LastIndex Fonksiyonu func LastIndex(s, substr string) int
Index Fonksiyonu
Diyelim ki elimize bir string var. kelime:= “index/deneme”
Bu stringte “/” karakterinin kaçıncı indexte olduğunu bulmak için;
index:= strings.Index(kelime, “/”)
fonksiyonu kullanırız.
Eğer index -1'den büyük bir değer dönerse indexini aradığımız karakterin stringte olduğunu ve dönen değerin aradığımız karakterin indexi olduğunu söyleyebiliriz.
Eğer index -1 dönerse indexini aradığımız karakterin stringte olmadığını söyleyebiliriz.
Bir örnek ile inceleyelim;
Çıktısı:
Gördüğümüz gibi aradığımız “/” karakter kelimemizin içinde var bu yüzden index:= strings.Index(kelime, “/”)
fonksiyonundan dönen değer -1'den büyük. Index 5 geliyor. Daha sonra if bloğuna giriyor ve;
kelime[:index]
ile “/” karakterden öncesini;
kelime[index+1:]
ile “/” karakterden sonrasını alabiliyoruz.
Ve daha sonra fmt.Println ile yazıdırmaları yapıyoruz.
LastIndex Fonksiyonu
Üstteki örnek ile devam edeceğim. Diyelim ki bu sefer kelimemizde “d” karakterinin indexini arıyoruz. Ama kelimemizde 2 adet “d” karakteri bulunuyor. Eğer Index fonksiyonunu kullanırsanız kelimedeki ilk “d” karakterinin indexini alır. Eğer LastIndex fonksiyonunu kullanırsanız kelimedeki son “d” karakterinin indexini alır.
Örnek:
Çıktısı:
Gördüğümüz gibi son “d” karakterinin indexini aldı ve o indexe göre işlemlere devam etti.
Golang Contains Kullanımı
String içerisinde bir karakter,bir kelime veya sayı var mı diye kontrol etmek istersek; func Contains(text, aranacakText string) bool
Örnek üzerinden inceleyelim…
Çıktı:
Çıktıya baktığımızda ilk “true” sonucunu görüyoruz. fmt.Println(strings.Contains(“Contains fonksiyonunu deniyoruz”, “Contains”))
Cümlemiz “Contains” kelimesini içerdiği için fonksiyon true sonucunu dönüyor.
Bu fonksiyonu genelde if bloğu ile kullanırız. Örneğini üstte görebilirsiniz.
Golang Regex Kullanımı
Öncelikle bazı regex patternlerini daha önce yayınladığım regex notlarımdan bulabilirsiniz. https://medium.com/@hanaku/regex-notlarım
Şimdi golang ile regular expressionları nasıl kullandığımıza bakalım…
Regex kullanımı için ilk olarak “regexp” kütüphanesini projemize import etmemiz gerekir.
Golang Regex kullanımı ile ilgili iki fonksiyondan bahsedeceğim.
- MatchString
func (re *Regexp) MatchString(s string) bool
- Compile
func Compile(expr string) (*Regexp, error)
Örnek ile bu iki fonksiyonun kullanımını inceleyelim…
Bu örneğimizde ipv4 adresi için bir deneme yapacağız.
Örnek:
Çıktı:
İlk olarak ipv4Pattern tanımlıyoruz. Tabii ki tanımlama yapmadan da fonksiyonlara string olarak da pattern verebiliriz.
Birinci seçenekte; MatchString ile belirlediğimiz pattern ile yazdığımız örnek ipv4 adresini karşılaştırıyoruz. Ve sonuç bool tipinde sonuc parametremize dönecektir.
İkinci seçenekte; Compile ile önce verdiğimiz pattern ile regular expression’ımızı tanımlıyoruz. reg parametresine dönüş yapacaktır. Daha sonra da, MatchString ile belirlediğimiz pattern ile yazdığımız örnek ipv4 adresini karşılaştırıyoruz. Ve sonuç bool tipinde sonuc parametremize dönecektir.
Daha fazla örneğe https://gobyexample.com/regular-expressions adresinden ulaşabilirsiniz.