2016-08-05 18 views
3

Ich verwendete strings.Trim() in Golang, um die ersten fünf Zeichen zu trimmen.
Allerdings ist das letzte "a" immer weg.
Warum ist das so?Golang: Strings Trim-Funktion

Beispiel:

sentence := "Kab. Kolaka Utara" 
result := strings.Trim(sentence,sentence[:4]) 
fmt.Println(result) 

Ergebnis: Kolaka Utar
ich erwartet hatte: Kolaka Utara

https://play.golang.org/p/R6UoKWNaVv

Vielen Dank für Ihre Hilfe.

+0

Was ist Ihre erwartete Ausgabe, zum Beispiel: "Kolaka Utara"? –

+0

@Amd Ja, ich erwartete Kolaka Utara – gchristi001

Antwort

6

Trim gibt ein Segment der Zeichenfolge s mit allen führenden und abschließenden Unicode-Codepunkten zurück, die im Cutset enthalten sind.

Satz [: 4] ist "Kab." Trim entfernt alle führenden und nachgestellten "k", "a", "b", "."

https://golang.org/pkg/strings/#Trim

+0

Oooh danke. Ich bekomme es jetzt :) – gchristi001

2

Da Strings sind UTF-8 in Golang codiert für einzelnes Byte Unicode-Codepunkten können Sie result := sentence[5:]
so arbeiten arbeiten Beispielcode:

package main 

import "fmt" 

func main() { 
    sentence := "Kab. Kolaka Utara" 
    result := sentence[5:] 
    fmt.Println(result) 
} 

Ausgang:

Kolaka Utara 

und für multibyte Unicode-Codepunkte wie "µµµµ Kolaka Utara" Sie string([]rune(sentence)[5:]), wie dieser Arbeitsbeispielcode verwenden:

package main 

import "fmt" 

func main() { 
    sentence := "µµµµ Kolaka Utara" 
    result := string([]rune(sentence)[5:]) 
    fmt.Println(result) 
} 

Ausgang:

Kolaka Utara 

und siehe Dokumente:

func Trim(s string, cutset string) string:

Trim gibt eine Scheibe des Strings S mit allen führenden und nachlauf Unicode-Codepunkte enthalten in Trenngruppe entfernt.

und sehen: Extracting substrings in Go

+0

Okay. Danke :) – gchristi001

1

Sie sollten die genaue Bedeutung von „trimmen“ in der Programmierung kennen: einige Zeichen Entfernen sowohl von Anfang bis Ende.

Und in Golang Strings.Trim, Das zweite Argument ist eine Reihe von Zeichen.

Trim entfernt alle führenden und nachfolgenden Zeichen in der Menge.

In Ihrem Beispiel:

Das Set ist

{"K", "a", ".", "b"}; 

Für "Kab Kolaka Utara.", Wird Trim entfernen "Kab." von Anfang an und "a" vom Ende.

Also die eigentliche Zeichenfolge, die Sie erhalten, ist "Kolaka Utar" anstelle von "Kolaka Utar", die keinen führenden Platz hat.

Wenn Sie wollen einfach nur die ersten fünf Zeichen „trimmen“, sollten Sie diese Anweisung verwenden:

sentence = sentence[5:]. 
0

Wenn Sie sicher sind, wie viele Zeichen getrimmt werden. Verwenden Sie diese Methode.

func main() { 
    sentence := "Kab. Kolaka Utara" 
    fmt.Println(sentence) 
    fmt.Println(sentence[5:len(sentence)]) 

} 

Ausgang:

Value : Kab. Kolaka Utara 
Trimed : Kolaka Utara