我在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
感谢您的帮助。
答案 0 :(得分:6)
Trim返回一个字符串s的片段,其中包含cutset中包含的所有前导和尾随Unicode代码点。
句子[:4]是" Kab。"修剪将删除所有前导和尾随""," a"," b","。"答案 1 :(得分:4)
答案 2 :(得分:2)
由于字符串在Golang中以单字节Unicode代码点进行UTF-8编码,因此您可以使用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的切片 删除了cutset中包含的Unicode代码点。
答案 3 :(得分:1)
你应该知道" trim"的确切含义。在编程中:从开头和结尾都删除一些字符。
在Golang的字符串中.Trim,第二个参数是一组字符。
修剪将删除集合中包含的所有前导和尾随字符。
在你的例子中:
该集是
{"K", "a", ".", "b"};
对于" Kab。 Kolaka Utara",Trim将删除" Kab。"从一开始就是" a"从最后开始。
所以,你得到的实际字符串是" Kolaka Utar"而不是" Kolaka Utar"没有领先的空间。
如果你只想"修剪"前五个字符,你应该使用这个语句:
sentence = sentence[5:].
答案 4 :(得分:0)
如果您确定要修剪的字符数。使用此方法。
func main() {
sentence := "Kab. Kolaka Utara"
fmt.Println(sentence)
fmt.Println(sentence[5:len(sentence)])
}
输出:
Value : Kab. Kolaka Utara
Trimed : Kolaka Utara