Go 字符串的基本操作

115 阅读3分钟
  1. 字符串长度计算

    • 在Go语言中,可以使用len()函数来计算字符串的长度。这个长度是指字符串中字节(byte)的数量。例如:
    str := "Hello, World!"
    length := len(str)
    // length的值为13
    
    • 需要注意的是,如果字符串包含多字节字符(如UTF - 8编码中的中文等非ASCII字符),len()函数返回的是字节数,而不是字符数。例如,对于字符串"你好",在UTF - 8编码下,len("你好")的值为6,因为每个中文字符占用3个字节。
  2. 字符串拼接

    • 使用+运算符:可以使用+运算符来拼接两个字符串。例如:
    str1 := "Hello"
    str2 := " World"
    result := str1 + str2
    // result的值为"Hello World"
    
    • 使用fmt.Sprintf()函数:这个函数可以按照指定的格式将多个值转换为字符串并拼接在一起。例如:
    name := "Alice"
    age := 30
    str := fmt.Sprintf("My name is %s and I'm %d years old.", name, age)
    // str的值为"My name is Alice and I'm 30 years old."
    
    • 使用strings.Builder(高效拼接):当需要拼接多个字符串时,strings.Builder是一种高效的方式。例如:
    var builder strings.Builder
    builder.WriteString("Hello")
    builder.WriteString(" World")
    result := builder.String()
    // result的值为"Hello World"
    
    • strings.Builder在拼接字符串时避免了频繁地创建新的字符串对象,因此在拼接大量字符串时性能更好。
  3. 字符串截取

    • 可以通过切片操作来截取字符串。字符串在Go语言中可以看作是一个字节切片,索引从0开始。例如:
    str := "Hello, World!"
    subStr := str[0:5]
    // subStr的值为"Hello",截取从索引0(包含)到索引5(不包含)的部分
    
    • 也可以省略切片的起始索引或结束索引。省略起始索引时,从字符串开头开始截取;省略结束索引时,截取到字符串末尾。例如:
    subStr1 := str[:5]
    subStr2 := str[7:]
    // subStr1的值为"Hello",subStr2的值为"World!"
    
  4. 字符串查找

    • 使用strings.Index()函数:可以查找一个子字符串在另一个字符串中的位置。它返回子字符串第一次出现的索引,如果没有找到则返回 - 1。例如:
    str := "Hello, World!"
    index := strings.Index(str, "World")
    // index的值为7,表示"World"在原字符串中第一次出现的索引为7
    
    • 使用strings.LastIndex()函数:用于查找子字符串在字符串中最后一次出现的位置。例如:
    str := "Hello, World! Hello"
    lastIndex := strings.LastIndex(str, "Hello")
    // lastIndex的值为13,表示"Hello"在原字符串中最后一次出现的索引为13
    
  5. 字符串比较

    • 使用==!=运算符:可以比较两个字符串是否相等或不相等。例如:
    str1 := "Hello"
    str2 := "Hello"
    if str1 == str2 {
        // 两个字符串相等
    }
    
    • 使用strings.Compare()函数(功能更丰富):这个函数比较两个字符串并返回一个整数。如果返回值为0,表示两个字符串相等;如果返回值小于0,表示第一个字符串小于第二个字符串;如果返回值大于0,表示第一个字符串大于第二个字符串。不过,在大多数情况下,使用==!=运算符就足够了。例如:
    str1 := "abc"
    str2 := "abd"
    result := strings.Compare(str1, str2)
    // result的值为-1,表示str1小于str2