使用下边访问字符串
// 只有英文字符时
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)
}
}
判断是否子串
这个问题是不是与搜索字串及其下标很相似?
strings.Contains(s, substr string) bool
判断字符串是否包含某个字符集和
strings.ContainsAny(s, chars string) bool
没错,判断是否包含子串就是搜索子串下标,然后判断搜索下标是否为 -1。
参考文档:
理解go中rune数据类型
Golang 字符串操作
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
环境准备 部署 httpbin 服务: kubectl apply -f samples/httpbin/httpbin.yaml 部署 sleep 服务: kubectl apply -f samples/sleep/sleep.yaml httpbin 服…