共计 1098 个字符,预计需要花费 3 分钟才能阅读完成。
应用下边拜访字符串
// 只有英文字符时
var str string
str = "hello"
fmt.Println("s0:", str[0], "string:", string(str[0]))
// 中文字符时
var str2 string
str2 = "你好"
fmt.Println("s0:", str2[0], "string:", string(str2[0]))
因为字符串时, 能够失常输入下标对应的值, 然而中文字符串时就乱码了, 所以咱们能够应用 for range
的形式拜访;
遍历字符串
应用 for range
遍历 string,
func main() {str3, err := find(str2, 0)
fmt.Println("str3:", str3, string(str3), "err:", err)
}
func find(s string, index int) (rune, error) {
for i, v := range s {
if i == index {return v, nil}
}
return rune(0), errors.New("out of range")
}
字符串拼接
对字符串进行 pop 操作, 应用 str[:len(str)-1]
, 在切片中也能够如此操作;
var str string
str = "string"
fmt.Println("源字符串:", str)
fmt.Println("拼接字符串:", str+"p")
fmt.Println("移除最初一个字符串:", str[:len(str)-1])
查看字符串是否相等
最简略的办法是应用 < > == >= <= 等操作符实现,非常灵活。
也能够应用 strings.Compare(a, b string) 办法实现,间接应用操作符返回的是 bool 值,而 strings.Compare 返回 -1 0 1 三者之一。想到什么没有?能够应用 switch 语句,缩小大量的 if-else 语句。
func main() {
a, b := "hello", "world"
switch strings.Compare(a, b) {
case 0:
fmt.Printf("%q==%q", a, b)
case -1:
fmt.Printf("%q<%q", a, b)
case 1:
fmt.Printf("%q>%q", a, b)
}
}
判断是否子串
这个问题是不是与搜寻字串及其下标很类似?
strings.Contains(s, substr string) bool
判断字符串是否蕴含某个字符集和
strings.ContainsAny(s, chars string) bool
没错,判断是否蕴含子串就是搜寻子串下标,而后判断搜寻下标是否为 -1。
参考文档:
了解 go 中 rune 数据类型
Golang 字符串操作
正文完