Go 语言 常用字符串函数的使用

Go 语言 常用字符串函数的使用

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

func main()  {
//	统计字符串的长度, 按字节统计len(str)
// golang 的编码统一为 utf-8, 一个英文占1个字节、一个汉字占3个字节
	var myStr string = "hello北京"
	fmt.Println("mystr的长度为:", len(myStr))
}
// 输出结果 11
原因:北京 占用 6个字节 + hello 五个字节 = 11个字节

2.字符串遍历,处理有中文的字符,r := []rune(str):

// 字符串遍历, 处理含有中文字符
func main() {
myStr1 := "hello北京"
	newStr := []rune(myStr1)
	for i := 0; i < len(newStr); i++ {
		fmt.Printf("%c\n", newStr[i])
	}
}
// 输出结果:
h
e
l
l
o
北
京

3.字符串转整数:

package main
import (
	"fmt"
	"strconv"
)

func () {
    // 字符串转整型
    var myStr2 string = "12"
    val, typeErr := strconv.Atoi(myStr2)
    fmt.Println("val=", val , "type_err=", typeErr)
}
// 输出结果:
val= 12 type_err= <nil>  // nil 表示空值
// 错误示例:
package main

import (
	"fmt"
	"strconv"
)

func main() {
	// 字符串转整型错误示范
	var myStrErr string = "hello"
	value, typeErr := strconv.Atoi(myStrErr)
	fmt.Println("value:", value, "typeErr", typeErr)
}
// 报错信息如下:
value: 0 typeErr strconv.Atoi: parsing "hello": invalid syntax

4.整数转字符串:

// 将整数类型 转换成字符串
package main

import (
	"fmt"
	"strconv"
)
func main()  {	
    // 将整数转换成字符串
	var myInt int = 666
	value := strconv.Itoa(myInt)
	fmt.Printf("value=%v type=%T", value, value)
}
// 输出如下:
value=666 type=string

5.字符串 转[]byte:

// 将字符串 转换成 字节
package main

import "fmt"

func main()  {
    // 字符串 转 []byte
	myStr3 := "hello"
	myByte := []byte(myStr3)
	fmt.Printf("mybyte=%v", myByte)
}
// 输出结果:
mybyte=[104 101 108 108 111]
ascii 表 对应  104 = "h"  101 = "e" 108 = "l" 111 = "o"

6.[]byte 转 字符串:

// 将[]byte 转换成 字符串
package main

import "fmt"

func main()  {
    // []byte 转 字符串
	myByte := []byte{104, 101, 108, 108, 111}
	myStr := string(myByte)
	fmt.Printf("str=%v", myStr)
}
// 输出结果:
str=hello

7.十进制转换2,8,16进制:

package main

import (
	"fmt"
	"strconv"
)

func main()  {
    // 进制转换  十进制 转换成  2、8、16进制
	var myInt int64 = 666
	result := strconv.FormatInt(myInt, 2)
	fmt.Printf("666对应的二进制:=%v\n", result)

	result1 := strconv.FormatInt(myInt, 8)
	fmt.Printf("666对应的八进制:=%v\n", result1)

	result2 := strconv.FormatInt(myInt, 16)
	fmt.Printf("666对应的十六进制:=%v", result2)
}
// 输出结果:
666对应的二进制:=1010011010
666对应的八进制:=1232
666对应的十六进制:=29a

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

package main

import (
	"fmt"
	"strings"
)
func main()  {
	// 检查 子串 是否在 指定的字符串中
	childStr := "abc"
	myStr := "abcdefg"
	result := strings.Contains(myStr, childStr)
	fmt.Printf("结果为:%v, 返回的类型为:%T", result, result)
}
// 输出结果:
结果为:true, 返回的类型为:bool

9.统计一个字符串中有几个指定的字符:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 统计一个字符串中有几个指定的字符
	myStr := "hello"
	result := strings.Count(myStr, "l")
	fmt.Printf("myStr中出现l的字符个数为:%v", result)
}
// 输出结果:
myStr中出现l的字符个数为:2

10.不区分大小写的字符串比较:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 不区分大小写字符串的比较
	myStr := "abc"
	myStr1 := "ABC"
	result := strings.EqualFold(myStr, myStr1)
	fmt.Printf("结果:%v\n", result)
    
    // == 号 是区分大小写的比较
	fmt.Println("结果:", myStr1 == myStr)
}
// 输出结果:
结果:true
结果: false

11.查找子串在字符串第一次出现的 index 值,若没有返回 -1:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 返回子串在字符串第一次出现的index 值, 如果没有返回 -1
	myStr := "fe_cow"
	index := strings.Index(myStr, "w")
	fmt.Printf("index=%v", index)
}
// 输出结果:
index=5   
如果没有找到: 返回 -1

12.查找子串在字符串最后一次出现的index,若没有返回 -1:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 返回子串在字符串中 最后一次出现的index值, 如果没有返回 -1
	myStr := "fe_cow_fe_cow"
	index := strings.LastIndex(myStr, "w")
	fmt.Printf("index=%v", index)
}
// 输出结果:
index=12

13.字符串的替换:

n = -1 表示全部替换;

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 字符串的替换  n = -1 表示全部替换
	myStr := "python python java go"
	result := strings.Replace(myStr, "python", "django", -1)
	fmt.Printf("myStr=%v\nresult=%v", myStr, result)
}
// 输出结果:
myStr=python python java go
result=django django java go

14.字符串的拆分:

一个字符串拆分成字符串数组;

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 字符串的拆分
	myStr := "hello world golang"
	// 根据空格进行拆分
	strArr := strings.Split(myStr, " ")
	for i:= 0; i < len(strArr); i ++{
		fmt.Printf("str[%v]=%v\n", i, strArr[i])
	}
	fmt.Printf("strArr=%v", strArr)
}
// 输出结果:
str[0]=hello
str[1]=world
str[2]=golang
strArr=[hello world golang]

15.字符串的大小写转换:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 字符串大小写的转换
	myStr := "HELLO golang"
	lowerStr := strings.ToLower(myStr)
	fmt.Printf("转换小写=%v\n", lowerStr)

	upperStr := strings.ToUpper(myStr)
	fmt.Printf("转换大写=%v", upperStr)
}
// 输出结果:
转换小写=hello golang
转换大写=HELLO GOLANG

16.去掉字符串左右两边空格:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 去掉字符串左右两边的空格
	myStr := " hello   "
	fmt.Printf("原字符串的长度为:%d\n", len(myStr))
	newStr := strings.TrimSpace(myStr)
	fmt.Printf("去除了左右两边的空格:%v, 字符串长度:%d", newStr, len(newStr))
}
// 输出结果:
原字符串的长度为:9
去除了左右两边的空格:hello, 字符串长度:5

17.去掉字符串左右两边指定的字符:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 去掉字符串左右两边的指定字符
	myStr := "!hello!"
	newStr := strings.Trim(myStr, "!")
	fmt.Printf("去掉指定字符两边指定字符:%v", newStr)
}
// 输出结果:
去掉指定字符两边指定字符:hello

18.去掉字符串左边指定的字符:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 去掉字符串左边指定的字符
	myStr := "hello python"
	newStr := strings.TrimLeft(myStr, "hello")
	fmt.Printf("去掉左边指定的字符:%v", newStr)
}
// 输出结果:
去掉左边指定的字符: python

19.去掉字符串右边指定的字符:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 去掉字符串右边指定的字符
	myStr := "hello django"
	newStr := strings.TrimRight(myStr, "django")
	fmt.Printf("去掉字符串右边指定的字符:%v", newStr)
}
// 输出结果:
去掉字符串右边指定的字符:hello 

20.判断字符串是否以指定字符开头:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 判断字符串, 是否以指定的字符进行开头
	myStr := "hello golang"
	boolStr := strings.HasPrefix(myStr, "hello")
	fmt.Printf("判断字符串, 是否以指定的字符进行开头:%v", boolStr)
}
// 输出结果:
判断字符串, 是否以指定的字符进行开头:true

21.判断字符串是否以指定的字符结束:

package main

import (
	"fmt"
	"strings"
)

func main()  {
    // 判断字符串, 是否以指定的字符结束, 返回值 布尔类型
	myStr := "hello python"
	boolStr := strings.HasSuffix(myStr, "python")
	fmt.Printf("是否以指定的字符结束:%v", boolStr)
}
// 输出结果:
是否以指定的字符结束:true
发布了158 篇原创文章 · 获赞 172 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Fe_cow/article/details/104049184