持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
一、字符串常用函数
- 统计字符串长度 - len(str)
- 字符串遍历,同时处理字符串含有
中文问题 - r:=[]rune(str) - 字符串转整数 - n,err := strconv.Atol("123")
- 整数转字符串 - str = strconv.Itoa(12345)
- 字符串 转 []byte - var bytes = []byte("hello go")
- []byte 转字符串 - str = string([]byte{97,98,99})
- 10进制转 2,8,16 进制 - str = strconv.FormateInt(123,2) // 2换成8,16
- 查找子串是否在指定的字符串中 - strings.Contains("seafood","foo") // 返回 true
- 统计一个字符串有几个指定的字串 - strings.Count("cheese","e") // 返回3
- 不区分大小写的字符串比较(==是区分大小写) - fmt.Println(strings.EqualFold("abc", "Abc")) // true
- 返回子串在字符串第一次出现的index值,如果没有就返回 -1 - strings.Index("bbbabcd", "abc") // 3
- 返回子串在字符串最后一次 出现的index,如没有返回-1 : strings.Lastlndex("go golang", "go")
13.将指定的子串替换成另外一个子串: strings.Replace("go go hello", "go", "go语言", n) n可以指定你希望替换几个,如果n=-1表示全部替换
- 按照指定的某个字符,为分割标识,将一个字符串拆分成字符串组:strings.Split("hello,wrold,ok", ",")
- 将字符串的字母进行大小写的转换: strings.Tolower("Go") // go strings.ToUpper("Go") // GO
- 将字符串左右两边的空格去掉: strings.TrimSpace(" tn a lone gopher ntrn ")
- 将字符串左右两边指定的字符去掉: strings.Trim("! hello!", ”!") // ["hello"] //将左右两边!和""去掉
- 将字符串左边指定的字符去掉: strings.Trimleft ("! hello!"," !") // ["hello"] //将左边!和""去掉
- 将字符串右边指定的字符去掉: strings.TrimRight("! hello!", " !") // ["hello"] //将右边!和""去掉
- 判断字符串是否以指定的字符串开头: strings.HasPrefix("ftp://192.168.10.1", "ftp") // true
- 判断字符串是否以指定的字符串结束strings.HasSufix("NLT abc.jpg", "abc") //false
二、案例分析
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
// 字符串长度
str := "Hello,世界"
// 字符串长度 = 12,一个中文占3个UTF-8长度
fmt.Println("字符串长度 = ", len(str))
// 遍历 []rune
str2 := "Welcome to 重庆"
str_new := []rune(str2)
for i := 0; i < len(str_new); i++ {
fmt.Printf("字符= %c\n", str_new[i])
}
// 字符串转整数
n, err := strconv.Atoi("123")
if err != nil {
fmt.Println("转换错误 ", err)
} else {
fmt.Println(n)
}
// 数字转字符串
str_num := strconv.Itoa(123)
fmt.Printf("str_num = %v, type = %T\n", str_num, str_num)
// 字符串转 []byte
var bytes = []byte("hello,Go")
// 对应的数字是 字母的ascii编码
fmt.Printf("bytes = %v\n", bytes)
// []byte 转 字符串
str_b := string([]byte{97, 98, 99})
fmt.Printf("str_b = %v\n", str_b)
// 十进制转换
// 13对应二进制
str_bin := strconv.FormatInt(13, 2)
fmt.Println("13对应二进制 = ", str_bin)
// 113对应十六进制
str_hex := strconv.FormatInt(113, 16)
fmt.Println("113对应二进制 = ", str_hex)
// 查找子串是否在特定字符串中
str_find := strings.Contains("seafood", "foo")
fmt.Println("str_find 结果为 ", str_find)
// 统计字符串中指定子串的数量
num := strings.Count("abccddecccc", "c")
fmt.Println("c的数量为 : ", num)
// 区分字符串比较(不分大小写)
str_eq := strings.EqualFold("abC", "ABC")
// str_eq 结果 true
fmt.Println("str_eq 结果 ", str_eq)
// 返回子串第一次出现在字符串的index下标
index := strings.Index("HellAbccEeee", "e")
// Index = 1
fmt.Println("Index = ", index)
// 返回子串最后一次出现在字符串的index下标
index = strings.LastIndex("HellAbccEeee", "e")
// Index = 1
fmt.Println("Index = ", index)
// 替换子串
str_source := "Abacadaeaf"
// 替换不影响原本的字符串
str_rp := strings.Replace(str_source, "a", "A", -1)
// 替换后的字符串为: AbAcAdAeAf
fmt.Println("替换后的字符串为: ", str_rp)
// 分割字符串
// 按 "," 进行拆分
strArr := strings.Split("hello,world,golang", ",")
// strArr = [hello world golang]
fmt.Println("strArr = ", strArr)
// 遍历该数组
for i := 0; i < len(strArr); i++ {
fmt.Printf("strArr[%v]=%v\n", i, strArr[i])
}
// 字符串大小写转换
strl := "lowstring"
stru := "UPPERstring"
strmix := "lowUPPer"
// 转换为大写
strl = strings.ToUpper(strl)
// 转换为小写
stru = strings.ToLower(stru)
// 转换为 大写
strmix = strings.ToUpper(strmix)
fmt.Printf("strl = %v, stru = %v, strmix = %v\n", strl, stru, strmix)
// 去掉字符串左右两边空格
// str = "Nice to see you"
str = strings.TrimSpace(" Nice to see you ")
fmt.Printf("str = %q\n", str)
// 去掉字符串两边指定字符串
// 去掉左右两边的 * ! 和空格
// 返回的是一个新的字符串
// str = "welcome"
str = strings.Trim("***! welcome !****", " !*")
fmt.Printf("str = %q\n", str)
// 去掉左边指定字符
// str = "welcome !****"
str = strings.TrimLeft("***! welcome !****", " !*")
fmt.Printf("str = %q\n", str)
// 去掉右边指定字符
// str = "***! welcome"
str = strings.TrimRight("***! welcome !****", " !*")
fmt.Printf("str = %q\n", str)
// 判断字符串是否以指定字符串开头
// result = true
result := strings.HasPrefix("https://192.168.1.1", "https")
fmt.Println("result = ", result)
// 判断字符串是否以指定字符串结尾
// result = true
result = strings.HasSuffix("1008611abcd", "bcd")
fmt.Println("result = ", result)
}