Golang:字符串修剪功能

voj3qocg  于 2023-02-01  发布在  Go
关注(0)|答案(5)|浏览(156)

我在Golang中使用strings.Trim()来修剪前五个字符。
但是,最后一个"a"总是没有了。
为什么会这样呢?
示例:

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

结果:Kolaka Utar
我期望:Kolaka Utara
https://play.golang.org/p/R6UoKWNaVv

oxiaedzo

oxiaedzo1#

Trim返回字符串s的一个切片,删除割集中包含的所有前导和尾随Unicode码点。
sentence[:4]"Kab."修剪将删除所有前导和尾随"k""a""b""."
https://golang.org/pkg/strings/#Trim

guicsvcw

guicsvcw2#

如果要修剪前5个字节,则用途:

result := sentence[5:]

playground example

33qvvth1

33qvvth13#

由于字符串是用Golang语言进行UTF-8编码的,单字节Unicode码位因此可以使用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
Trim返回字符串s的一个切片,删除割集中包含的所有前导和尾随Unicode码点。
并参见:Extracting substrings in Go

eoigrqb6

eoigrqb64#

您应该知道"trim"在编程中的确切含义:从开头和结尾都去除一些字符。
在Golang的strings.trim中,第二个参数是一组字符。
Trim将删除集合中包含的所有前导字符和尾随字符。
在您的示例中:
这套是

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

对于"Kab. Kolaka Utara",Trim将从开头删除"Kab.",从结尾删除"a"。
所以,实际得到的字符串是"Kolaka Utar",而不是没有前导空格的"Kolaka Utar"。
如果您只想"修剪"前五个字符,则应使用以下语句:

sentence = sentence[5:].
1cklez4t

1cklez4t5#

如果你确定要裁剪多少个字符,就使用这个方法。

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

}

输出:

Value :  Kab. Kolaka Utara
 Trimed : Kolaka Utara

相关问题