Golang_String常用操作

字符串操作:

字符操作不会影响原字符串,如果处理后又返回给原字符串则会改变,但一般是使用新变量接收处理

len:统计字符串的长度,但如果有中文时会出现乱码的情况,转换为range可以解决

func main() {
	str := "English中文"
	fmt.Println("str的长度为:", len(str)) // 13,中文3个字节

	str2 := "English中文"
	for i := 0; i < len(str2); i++ {
		fmt.Println(str2[i]) // 这里是按照字节遍历的,结果是对应的ASCII表中的数字
	}

	str3 := "English中文"
	for i := 0; i < len(str3); i++ {
		fmt.Printf("%c", str3[i]) //这里是按照字符输出,就会乱码
	}
	str4 := "English中文"
	s := []rune(str4)
	for i := 0; i < len(s); i++ {
		fmt.Printf("%c", s[i]) //English中文
	}
}

查找子串是否在指定的字符串中:

func main() {
	fmt.Println(strings.Contains("itzhuzhu", "zhuzhu")) // true
	fmt.Println(strings.Contains("itzhuzhu", "Hello"))  // false
}

统计一个字符串有几个指定的子串 :

func main() {
	fmt.Println(strings.Count("aaabbbccc", "abcabc"))    // 0
	fmt.Println(strings.Count("aaabbbccc", "aaabbbccc")) //1
}

字符串比较(==是区分大小写,EqualFold是不区分大小写)

func main() {
	var x string = "ITzhuzhu"
	var y string = "itzhuzhu"
	fmt.Println(strings.EqualFold(x, y)) //true
	fmt.Println(x == y)                  //false
}

返回子串在字符串第一次出现的索引,如果没有则返回-1:

func main() {
	fmt.Println(strings.Index("ITzhuzhu", "I"))      // 0
	fmt.Println(strings.Index("ITzhuzhu", "IT"))     // 0
	fmt.Println(strings.Index("ITzhuzhu", "ITZ"))    // -1
	fmt.Println(strings.Index("ITzhuzhu", "zhuzhu")) // 2
}

返回子串在字符串最后一次出现的索引,如果没有返回-1:

func main() {
	fmt.Println(strings.LastIndex("ITzhuzhu", "IT"))  // 0
	fmt.Println(strings.LastIndex("ITzhuzhu", "zhu")) // 5
	fmt.Println(strings.LastIndex("ITzhuzhu", "u"))   // 7
}

将指定的子串替换成另外一个子串:

func main() {
	// 参数1:字符串,参数2:要替换的字符串,参数3,替换后的字符串,参数4,替换几个,-1是全部,1是第一个,2是第二个,以此类推
	fmt.Println(strings.Replace("itzhuzhu", "z", "Z", 1))  // itZhuzhu
	fmt.Println(strings.Replace("itzhuzhu", "z", "Z", -1)) // itZhuZhu
}

按照指定的某个字符,为分割标识,将一个字符串拆分为字符串数组

func main() {
	s := strings.Split("it,zhu,zhu", ",")
	fmt.Printf("%T,%v", s, s) // []string,[it zhu zhu]
}

将字符串的字母进行大小写的转换:

func main() {
	// ToLower:转为小写,ToUpper:转为大写
	fmt.Printf(strings.ToLower("ITZHUZHU\n")) // itzhuzhu
	fmt.Printf(strings.ToUpper("itzhuzhu"))   // ITZHUZHU
}

将字符串左右两边的空格去掉:

func main() {
	fmt.Printf(strings.TrimSpace(" IT ZHU ZHU ")) // IT ZHU ZHU 只能去掉两边的空格,中间的去不掉
}

将字符串左右两边指定的字符删除:

func main() {
	// 删除两边指定的字符     参数1:原字符串,参数2:要去掉的字符
	fmt.Println(strings.Trim("&%IT ZHU ZHU&%*(」", "&%*(」"))      //IT ZHU ZHU
  // 删除左边指定的字符
	fmt.Println(strings.TrimLeft("&%IT ZHU ZHU&%*(」", "&%"))     //IT ZHU ZHU&%*(」
  // 删除右边指定的字符
	fmt.Println(strings.TrimRight("&%IT ZHU ZHU&%*(」", "&%*(」")) //&%IT ZHU ZHU
}

判断字符串是否以指定的字符串开头: strings.HasPrefix(“ftp://192.168.10.1”, “ftp”) // true

func main() {
	// 判断是不是以www开头的,返回值是bool
	fmt.Println(strings.HasPrefix("www.itzhuzhu.com", "www.")) // true
	// 判断是不是com结尾
	fmt.Println(strings.HasSuffix("www.itzhuzhu.com", "www"))  // false
	fmt.Println(strings.HasSuffix("www.itzhuzhu.com", ".com")) // true
}

版权声明:本文为weixin_45477086原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。