Golang: 字符串 Trim 函数

3
我曾在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


1
你的期望输出是什么,例如:“Kolaka Utara”? - user6169399
@Amd 是的,我预计了Kolaka Utara。 - gchristi001
对于只想从字符串中删除空格(“trim”的标准定义)的谷歌员工,可以使用strings.Trim(s, " ")来删除空格,或者使用strings.TrimSpace(s)来删除所有空白字符。 - ggorlen
5个回答

6

Trim函数返回一个切片,其中包含从字符串s中删除cutset中包含的所有前导和尾随Unicode代码点。

sentence[:4]"Kab." Trim将删除所有前导和尾随的"k""a""b""."

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


4

如果您想删除前5个字节,则使用以下命令:

result := sentence[5:]

playground example


2

由于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

对于多字节Unicode代码点,例如"µµµµ Kolaka Utara",您可以使用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 中删除 cutset 中包含的所有前导和尾随 Unicode 代码点的切片。

请参阅:在 Go 中提取子字符串


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

对于“Kab. Kolaka Utara”,Trim会从开头删除“Kab.”并从结尾删除“a”。因此,您得到的实际字符串是“ Kolaka Utar”,而不是没有前导空格的“Kolaka Utar”。
如果您只想“修剪”前五个字符,则应使用此语句:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接