字符串常用操作
代码示例:
package main
import (
"fmt"
"strings"
)
// 转义符
// \r: 回车符,返回行首,后续字符串会从行首覆盖该行字符串
// \n: 换行符
// \t: 制表符
func main() {
// 一对双引号内部的双引号需要转义才能使用;路径中的反斜杠需要转义才能正确输出
fmt.Println("str := \"c:\\Code\\lesson1\\go.exe\"") // str := "c:\Code\lesson1\go.exe"
// 多行字符串,反引号间换行将被作为字符串中的换行,但是所有的转义字符均无效,文本将会原样输出。
s1 := `这是第一行\n
天苍苍
野茫茫
风吹草低现牛羊
`
fmt.Println(s1)
// 字符串相关操作
s2 := "abc"
s3 := "def"
// len(str): 求字符长度
fmt.Println(len(s2)) // 3
// +: 字符串拼接
s4 := s2 + s3
fmt.Println(s4) // abcdef
// fmt.Sprintf(), 字符串拼接,返回拼接后的字符串
s5 := fmt.Sprintf("%s %s", s2, s3) // abc def
fmt.Println(s5)
// 分割, strings.Split(str, sep string), 返回 string 类型的切片
s6 := "a,b,c,d"
fmt.Println(strings.Split(s6, ",")) // [a b c b]
// 判断是否包含子串, strings.Contains(str, subStr string), 返回值是 bool 类型
fmt.Println(strings.Contains(s6, "a")) //true
// 判断子串是否是前缀
fmt.Println(strings.HasPrefix(s6, ",")) // false
// 判断子串是否是后缀
fmt.Println(strings.HasSuffix(s6, "d")) // true
s7 := "abab"
// 子串第一次出现的位置, 返回值是 int 类型
fmt.Println(strings.Index(s7, "a")) // 0
// 子串最后一次出现的位置, 返回值是 int 类型
fmt.Println(strings.LastIndex(s7, "a")) // 2
// strings.Join(elems []string, sep string), 将切片内元素用sep字符串拼接
slice := []string{"aaa", "bbb", "ccc"}
fmt.Println(strings.Join(slice, "+")) // aaa+bbb+ccc
}
s1的输出(注意行数和缩进的变化):
这是第一行\n
天苍苍
野茫茫
风吹草低现牛羊
这是最后一行
其它输出都在注释中