Golang Notlarım 2

Hatice Nazlı Kuş
4 min readMar 19, 2021

--

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//”
  1. 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.

  1. Index Fonksiyonu func Index(s, substr string) int

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.

  1. MatchString func (re *Regexp) MatchString(s string) bool
  2. 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.

--

--

Hatice Nazlı Kuş

“Bilgi, sevgi gibi paylaştıkça çoğalır.” mottosu ile paylaşımlar yapan bir bilgisayar mühendisi :)