2016-08-05 48 views
3

私はGolangでstrings.Trim()を使用して最初の5文字を​​トリミングしました。
しかし、最後の "a"はいつも消えています。
なぜそうですか?Golang:文字列トリム関数

例:

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

結果:Kolaka Utar
私は予想:Kolaka Utara

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

はあなたの助けをいただき、ありがとうございます。

+0

例えば、あなたの期待出力、どのようなものです: "コラカウタラ" は? –

+0

@Amdはい、私はKolaka Utaraを期待しました – gchristi001

答えて

6

トリムは、カットセットに含まれるすべての先頭と末尾のUnicodeコードポイントを削除した文字列sのスライスを返します。

文[:4]が「Kab」です。トリムは、先頭と末尾の "k"、 "a"、 "b"、 "。"をすべて削除します。その後、

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

+0

ありがとうございました。私は今それを得る:) – gchristi001

2

あなたが最初の5つのバイトをトリミングしたい場合は、使用します。

result := sentence[5:] 

playground example

+0

よかった。ありがとうございました:) – gchristi001

2

を文字列がUTF-8 シングルバイトのUnicodeコードポイントのためGolangでエンコードされているので、result := sentence[5:]
このサンプルコードのように使用できます。

package main 

import "fmt" 

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

出力:

Kolaka Utara 

"µµµµ Kolaka Utara"などのマルチバイトのUnicodeコードポイントのためにあなたは、この作業のサンプルコードのように、string([]rune(sentence)[5:])を使用することがあります。

package main 

import "fmt" 

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

出力:

Kolaka Utara 

とドキュメントを参照してください

func Trim(s string, cutset string) stringを:

トリムは、すべての主要除去カットセットに含ま Unicodeコードポイントを末尾の文字列Sのスライスを返します。

と参照:最初と最後の両方からいくつかの文字を削除:Extracting substrings in Go

+0

よろしくお願いします:) – gchristi001

1

をあなたはプログラミングで「トリム」の正確な意味を知っている必要があります。

ゴランの文字列.Trim、第2引数は文字の集合です。

トリムは、セットに含まれる先頭文字と末尾文字をすべて削除します。あなたの例では

:セットは、 "甲コラカウタラ" については

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

ある

、トリムは "甲" を削除します最初から "a"を最後から。

実際の文字列は「Kolaka Utar」ではなく「Kolaka Utar」です。

あなただけの最初の5つの文字を「トリミング」したい場合は、このステートメントを使用する必要があります。

sentence = sentence[5:]. 
0

あなたはトリミングする文字数について確実な場合。このメソッドを使用します。

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

} 

出力:

Value : Kab. Kolaka Utara 
Trimed : Kolaka Utara