赞
踩


我们知道一个中文字符占3个字节,以上为例,s为字符串"smallming张"且字符张占据字符串第9位到第11位,如果我们想打印出字符“张”,无论s[9]、s[10]还是s[11]都不能得到完整的字符”张“的。我们必须同时获取9-11才能得到完整的字符”张“。于是有:

在上面的例子中我们知道这个字符串的内容是什么所以很容易获取里面的任意内容,但是如果我们不知道一个字符串的内容是什么时,可以通过下面方法获取其内容。

如果想要获得真实的字符串长度而不是其所占用字节数,有两种方法实现:
方法一:使用unicode/utf-8包中的RuneCountInString方法
- str := "hello 世界"
- fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))
方法二:将字符串转换为rune类型的数组再计算长度
- str := "hello 世界"
- fmt.Println("rune:", len([]rune(str)))
s := "SmaLLming张"
//strings.Index(s, "m")查找字符“m”在字符串s中第一次出现的位置
fmt.Println(strings.Index(s, "m"))//输出1
//strings.LastIndex(s, "m")查找字符"m"在字符串s中最后一次出现的位置
fmt.Println(strings.LastIndex(s, "m"))//输出5
//strings.HasPrefix(s, "small")判断字符串s是否以指定字符串“small”开头
fmt.Println(strings.HasPrefix(s, "small"))//输出true
//strings.HasSuffix(s, "张")判断字符串s是否以指定字符串“张结尾”
fmt.Println(strings.HasSuffix(s, "张"))//输出true
//strings.Contains(s, "110")判断字符串s是否包含指定字符串“110”
fmt.Println(strings.Contains(s, "110"))//输出false
//strings.ToLower(s)将字符串s全部变小写
fmt.Println(strings.ToLower(s))//输出smallming张
//strings.ToUpper(s)将字符串s全变大写
fmt.Println(strings.ToUpper(s))//输出SMALLMING张
//strings.Replace(s, "m", "X",1)将字符串s中n的字符"m"替换成"X",当n小于0时表示全部替换
fmt.Println(strings.Replace(s, "m", "X",-1))//输出SXaLLXing张
//strings.Repeat(s, 2)把字符串s复制count遍
fmt.Println(strings.Repeat(s, 2))//输出SmaLLming张SmaLLming张
//strings.Trim(s, "S")去掉字符串前后指定的字符(前后只要有不管有几个就都去掉
fmt.Println(strings.Trim(s, "S"))
//当去掉空格时可以用strings.TrimSpace(s)代替
fmt.Println(strings.TrimSpace(s))
//strings.Split(s, "m")将s从指定字符"m"处切开,切片不再包括"m"
fmt.Println(strings.Split(s, "m"))//[S aLL ing张]
fmt.Printf("%T\n", strings.Split(s, "m"))//[]string字符串切片类型
//strings.Join(x, "")用指定分隔符将切片内容合并成字符串
x := []string{"a", "b", "c"}
fmt.Printf(strings.Join(x, ""))//输出abc
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。