2020-07-06 08:32:06
在Go语言中,字符串截取是常见的操作,可以通过多种方式实现。以下是详细的字符串截取方法及示例:
1. 基本索引截取Go语言中的字符串本质上是字节切片,可以通过缓唯启索引范围截取子串。语法:str[start:end](包含start,不包含end)。示例:
package mainimport "fmt"func main() { str := "Hello, World!" // 截取索引0到5(前6个字符) substr1 := str[0:6] // "Hello," // 截取索引7到末尾 substr2 := str[7:] // "World!" fmt.Println(substr1, substr2)}注意:
strings包提供函数(如Index)定位字符位置,再结合索引截取。示例:截取逗号后的内容(跳过空格):
package mainimport ( "fmt" "strings")func main() { str := "Hello, World!" commaIndex := strings.Index(str, ",") substr := str[commaIndex+2:] // "+2"跳过逗号和空格 fmt.Println(substr) // "World!"}3. 截取指定长度的字符串通过循环逐个字符拼接,可精确控制截取长度。示例:截取前5个字符:
package mainimport "fmt"func main() { str := "Hello, World!" substr := "" for i := 0; i < 5 && i < len(str); i++ { substr += string(str[i]) } fmt.Println(substr) // "Hello"}适用场景:需动态判断截取长度时(如避免越界)。
4. 处理中文字符截取中文字符占多个字节(UTF-8编码),山春直接索引截取可能导致乱码。需用unicode/utf8包按字符处理。示例:截取前6个字符(含中文)扰如:
package mainimport ( "fmt" "unicode/utf8")func main() { str := "你好,世界!" substr := "" for i, w := 0, 0; i < len(str) && w < 6; { r, size := utf8.DecodeRuneInString(str[i:]) substr += string(r) i += size w++ } fmt.Println(substr) // "你好,世"}关键点:
掌握这些方法后,可灵活应对Go语言中的字符串截取需求。如需进一步学习,可参考