【第二十四篇】Go 字符串函数详解🔥🔥

104 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情

一、字符串中常用的函数:

说明:字符串在我们程序开发中,使用的是非常多的,常用的函数需要同学们掌握。

  1. 统计字符串的长度,按字节 len(str)
package main

import "fmt"

func main() {
	// 统计字符串的长度,按字节 len(str)

	str := "hello"
	fmt.Println("str len=", len(str))

	// golang的编码统一为 utf - 8 (ASCII的字符(字母和数字)占一个字节,汉字占3个字节)
	str1 := "hello北"
	fmt.Println("str1 len=", len(str1))
}

  1. 字符串遍历,同时处理有中文的问题:r:=[]rune(str)
package main

import "fmt"

func main() {
	// // 统计字符串的长度,按字节 len(str)

	// str := "hello"
	// fmt.Println("str len=", len(str))

	// // golang的编码统一为 utf - 8 (ASCII的字符(字母和数字)占一个字节,汉字占3个字节)
	// str1 := "hello北"
	// fmt.Println("str1 len=", len(str1))

	// 遍历字符串每一个字符
	str2 := "hello北京"
	// 字符串变阿玲,同时处理有中文问题 r:=[]rune(str)
	r := []rune(str2)
	for i := 0; i < len(str2); i++ {
		fmt.Printf("字符=%c\n", r[i])
	}
}

  1. 字符串转整数:n,err := strconv.Atoi("123")
package main

import (
	"fmt"
	"strconv"
)

func main() {

	// 字符串转整数:
	n, err := strconv.Atoi("123")
	if err != nil {
		fmt.Println("转换错误", err)
	} else {
		fmt.Println("转换结果是", n)
	}
}

nil:就是空,相当于其他语言里面的NULL或者NONE


  1. 整数转字符串 str = strconv.ltoa(12345)
package main

import (
	"fmt"
	"strconv"
)

func main() {

	str := "hello"

	// 整数转字符串 str = strconv.ltoa(12345)
	str = strconv.Itoa(12345)
	fmt.Printf("str=%v,str=%T", str, str)
}


  1. 字符串转[]byte:var byte = []byte("hello go")
package main

import (
	"fmt"
)

func main() {

	// 字符串转[]byte:var byte = []byte("hello go")
	var bytes = []byte("hello go")
	fmt.Printf("byte=%v\n", bytes) // 这里输出的是字母对应的 ascll 编码
}


  1. []byte 转字符串:str = string([]byte(91.98.99))
package main

import (
	"fmt"
)

func main() {
    
	str := "hello"
	// []byte 转字符串:str = string([]byte(91.98.99))
	str = string([]byte{97, 98, 99})
	fmt.Printf("str= %v\n", str)

}


  1. 10 进制转 2,8,16进制:str = strconv.Formatlnt(123,2) // 2-->8,16
package main

import (
	"fmt"
	"strconv"
)

func main() {

	str := "hello"

	// 10 进制转 2,8,16进制:str = strconv.Formatlnt(123,2) // 2-->8,16 ,返回对应的字符串
	str = strconv.FormatInt(123, 2)
	fmt.Printf("123对应的二进制是=%v\n", str)
	str = strconv.FormatInt(123, 8)
	fmt.Printf("123对应的二进制是=%v\n", str)
	str = strconv.FormatInt(123, 16)
	fmt.Printf("123对应的二进制是=%v\n", str)

}


  1. 查找子串是否在指定的字符串中:strings.Contains("seafood","foo") // true
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 查找子串是否在指定的字符串中:strings.Contains("seafood","foo") // true
	b := strings.Contains("seafood", "foo")
	fmt.Printf("b=%v\n", b)
	f := strings.Contains("seafood", "marry")
	fmt.Printf("b=%v\n", f)
}


  1. 统计一个字符串由几个指定的字串:strings.Count("ceheese","e") //4
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 统计一个字符串由几个指定的字串:strings.Count("ceheese","e") //4
	num := strings.Count("ceheese", "e")
	fmt.Printf("num=%v\n", num)
	num1 := strings.Count("ceheese", "se")
	fmt.Printf("num=%v\n", num1)
}


  1. 不区分大小写的字符串比较(==是区分字母大小写的): fmt.Println(strings.EqualFold("abc","Abc")) // true
package main

import (
	"fmt"
	"strings"
)

func main() {

	b := strings.Contains("seafood", "foo")

	// 不区分大小写的字符串比较(==是区分字母大小写的): fmt.Println(strings.EqualFold("abc","Abc"))  // true
	b = strings.EqualFold("abc", "Abc")
	fmt.Printf("b=%v\n", b)

	fmt.Println("结果", "abc" == "Abc")

	
}


  1. 返回子串在字符串第一次出现的 index 值,如果没有返回 -1 :string.Index("NLT_abc","abc") //4
package main

import (
	"fmt"
	"strings"
)

func main() {
    
	// 返回子串在字符串第一次出现的 index 值,如果没有返回 -1 :string.Index("NLT_abc","abc") //4
	index := strings.Index("NLT_abc", "abc")
	fmt.Printf("index= %v\n", index)

}


  1. 返回子串的在字符串最后一次出现的 index ,如果没有返回-1 :strings.LastIndex("go golang", "go")
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 12. 返回子串的在字符串最后一次出现的 index ,如果没有返回-1 :strings.LastIndex("go golang", "go")
	index := strings.LastIndex("go golang", "go")
	fmt.Printf("index = %v\n", index)

}


  1. 将指定的子串替换成另外一个子串:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 13. 将指定的子串替换成另外一个子串:
	str := strings.Replace("go go hello", "go", "北京", 1)
	fmt.Printf("str= %v\n", str)

	str1 := "go go hello"
	str2 := strings.Replace(str1, "go", "北京", -1)
	fmt.Printf("str2= %v\n", str2)

}


  1. 按照指定的某个字符,为分隔标识,将一个字符串拆分成字符串数组。
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 按照指定的某个字符,为分隔标识,将一个字符串拆分成字符串数组。
	strArr := strings.Split("hello,wrold,ok", ",")
	fmt.Printf("steArr= %v\n", strArr)
}

package main

import (
	"fmt"
	"strings"
)

func main() {

	// 按照指定的某个字符,为分隔标识,将一个字符串拆分成字符串数组。
	strArr := strings.Split("hello,wrold,ok", ",")
	for i := 0; i < len(strArr); i++ {
		fmt.Printf("str[%v] = %v\n", i, strArr[i])
	}
	fmt.Printf("steArr= %v\n", strArr)
}


  1. 将字符串的字母进行大小写转换:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 将字符串的字母进行大小写转换:
	str := "goLang Hello"

	// 全部小写
	str = strings.ToLower(str)
	fmt.Printf("str = %v\n", str)

	// 全部大写
	str = strings.ToUpper(str)
	fmt.Printf("str = %v\n", str)
}


  1. 将字符串左右两边的空格去掉:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 将字符串左右两边的空格去掉:
	str := strings.TrimSpace(" to a lone gopher ntrn   ")
	fmt.Printf("str=%v\n", str)
}


  1. 将字符串左右两边指定的字符去掉:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 将字符串左右两边指定的字符去掉:! 和空格
	str := strings.Trim("! hello! ", " !")
	fmt.Printf("str=%v\n", str)
}


  1. 将字符串左边指定的字符去掉:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 将字符串左边指定的字符去掉:
	str := strings.TrimLeft("!hello!", "!")
	fmt.Printf("str=%v\n", str)

	// 将字符串右边指定的字符去掉:
	str1 := strings.TrimRight("!hello!", "!")
	fmt.Printf("str=%v\n", str1)
}


  1. 将字符串右边指定的字符去掉:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 将字符串左边指定的字符去掉:
	str := strings.TrimLeft("!hello!", "!")
	fmt.Printf("str=%v\n", str)

	// 将字符串右边指定的字符去掉:
	str1 := strings.TrimRight("!hello!", "!")
	fmt.Printf("str=%v\n", str1)
}


  1. 判断字符串是否以指定的字符串开头:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 判断字符串是否以指定的字符串开头:
	b := strings.HasPrefix("ftp://192.168.110.110", "ftp")
	fmt.Printf("b = %v\n", b)
}


  1. 判断字符串是否以指定的字符串结束:
package main

import (
	"fmt"
	"strings"
)

func main() {

	// 判断字符串是否以指定的字符串结束:
	b := strings.HasSuffix("192.168.110.110.ftp", "ftp")
	fmt.Printf("b = %v\n", b)
	c := strings.HasSuffix("192.168.110.110.123", "ftp")
	fmt.Printf("c = %v\n", c)
}