【GO-字符串函数】

一、len(str)返回字符串、数组长度

package main

import (
	"fmt"
)

func main() {
	str := "NANJING南京"//golang编码统一为utf-8(ascii的字符(字母和数字)占一个字节),汉字占3个
	fmt.Println("str的长度是", len(str))

}

输出

PS D:\GO\goproject\chaptor6\stringfun> go run .\main.go
str的长度是 13

二、字符串遍历,同时处理有中文的问题

a := []rune(str)切片转换

package main

import (
	"fmt"
)

func main() {
	//str := "NANJING南京"//golang编码统一为utf-8(ascii的字符(字母和数字)占一个字节),汉字占3个
	//fmt.Println("str的长度是", len(str))

	str2 := "hello南京"
	//使用切片
	r :=[]rune(str2)
	for i := 0; i < len(r); i++ {
		fmt.Printf("字符=%c\n", r[i])
	}
}

输出

PS D:\GO\goproject\chaptor6\stringfun> go run .\main.go
字符=h
字符=e
字符=l
字符=l
字符=o
字符=南
字符=

三、字符串转整数、整数转字符串

1、字符串转整数n, err := strconv.Atoi(“hello”)

package main

import (
	"fmt"
	"strconv"
)

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

输出

PS D:\GO\goproject\chaptor6\stringfun\demo1> go run .\main.go
转成结果是 123

如果无法转成整数:

package main

import (
	"fmt"
	"strconv"
)

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

输出

PS D:\GO\goproject\chaptor6\stringfun\demo1> go run .\main.go
转换错误 strconv.Atoi: parsing "hello": invalid syntax

2、整数转字符串str = strconv.Itoa(2345)

package main

import (
	"fmt"
	"strconv"
)

func main() {
	a := 23455
	str1 := strconv.Itoa(a)
	fmt.Printf("a的字符串值是%v, 类型是%T", str1, str1)
}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo2> go run .\mian.go
a的字符串值是23455, 类型是string

四、字符串互转byte

1、字符串转byte,[]byte(“hello go”)输出ascii码

package main

import (
	"fmt"
)

func main()  {
	var bytes = []byte("hello go")
	fmt.Printf("bytes=%v\n", bytes)
	//输出对应ascii码
}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
bytes=[104 101 108 108 111 32 103 111]

2、byte转字符串,string([]byte{97, 98, 99})

package main

import (
	"fmt"
)

func main()  {
	
	str := string([]byte{97, 98, 99})
	fmt.Printf("str的值是%v str的类型是%T", str, str)
	
}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
str的值是abc str的类型是string

五、查找子串是否在指定的字符串中,返回bool值,strings.Contains(“seafood”, “foo”)

package main

import (
“fmt”
“strings”
)

func main() {
//var bytes = []byte(“hello go”)
//fmt.Printf(“bytes=%v\n”, bytes)//输出对应ascii码

//str := string([]byte{97, 98, 99})
//fmt.Printf("str的值是%v str的类型是%T", str, str)

b :=strings.Contains("seafoods", "foo")
fmt.Printf("b=%v, b的类型%T\n", b, b)
c :=strings.Contains("seafoods", "fool")
fmt.Printf("c=%v, c的类型%T\n", c, c)

}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
b=true, b的类型bool
c=false, c的类型bool

六、统计一个字符串中有几个指定的子串,strings.count(“select”, “e”) //2

七、不区分字母大小写的字符串比较(==区分字母大小写),返回bool,strings.EqualFold(“abc”,“AbC”)

package main

import (
	"fmt"
	"strings"
)

func main()  {

	d := strings.EqualFold("abc", "AbC")
	fmt.Printf("d=%v, d的类型%T\n", d, d)
}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
d=true, d的类型bool

八、返回子串在字符串中第一次出现的index值,如果没有返回-1,strings.Index(“NLT_abc”, “abc”)//4

package main

import (
	"fmt"
	"strings"
)

func main()  {

	e := strings.Index("NLT_abc", "abc")
	fmt.Printf("e=%v, e的类型%T\n", e, e)

}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
e=4, e的类型int

没有该值

package main

import (
	"fmt"
	"strings"
)

func main()  {
	e := strings.Index("NLT_abc", "ABC")
	fmt.Printf("e=%v, e的类型%T\n", e, e)

}
PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
e=-1, e的类型int

九、返回子串在字符串中最后一次出现的index值,如果没有返回-1,strings.LastIndex(“go golang”, “go”)//3

十、将指定子串替换成另一个子串:strings.Replace(“go go hello”, “go”, “go语言”, n) ,n指定需要替换几个,如果n=-1,表示全部替换

package main

import (
	"fmt"
	"strings"
)

func main()  {
	str2 := "go go hello"
	f := strings.Replace(str2, "go", "go语言", -1) 
	//只做替换,不改变原来的值
	fmt.Printf("f=%v, f的类型%T\n", f, f)
	fmt.Printf("str2=%v, str2的类型%T\n", str2, str2)
}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
f=go语言 go语言 hello, f的类型string
str2=go go hello, str2的类型string

十一、按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组,strings.Split(“hello,world,go”, “,”)

package main

import (
	"fmt"
	"strings"
)

func main()  {

	strArr := strings.Split("hello,world,go", ",")
	for i := 0; i < len(strArr); i++ {
		fmt.Printf("i=%v\n", strArr[i])
	}
	fmt.Printf("strArr=%v, strArr的类型%T", strArr, strArr)

}

输出

PS D:\GO\goproject\chaptor6\stringfun\demo3> go run .\main.go
i=hello
i=world
i=go
strArr=[hello world go], strArr的类型[]string

十二、将字符串的字母进行大小写转换,strings.ToLower(“Go”)//go, strings.ToUpper(“Go”)//GO

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "Golang Hello"
	str1 := strings.ToLower(str)
	str2 := strings.ToUpper(str)
	fmt.Printf("str1=%v\n", str1)
	fmt.Printf("str2=%v\n", str2)
	fmt.Printf("str=%v\n", str)
}

输出

PS D:\goproject\src\go_code\chaptor6hanshu\demo1> go run .\main.go
str1=golang hello
str2=GOLANG HELLO
str=Golang Hello

十三、将字符串左右空格去除、出去两边指定字符、去除左边指定字符、去除右边指定字符

package main

import (
	"fmt"
	"strings"
)

func main() {
	str1 := strings.TrimSpace(" An apple   ")
	fmt.Printf("str1=%q\n", str1)
	str2 := strings.Trim("!hello!!", "!")//左右两边一个或连在一起的多个都会去除
	fmt.Printf("str2=%q\n", str2)
	str3 := strings.TrimLeft("!hello!!", "!")
	fmt.Printf("str3=%q\n", str3)
	str4 := strings.TrimRight("!hello!!", "!")
	fmt.Printf("str4=%q\n", str4)

}

输出

PS D:\goproject\src\go_code\chaptor6hanshu\demo1> go run .\main.go
str1="An apple"
str2="hello"
str3="hello!!"
str4="!hello"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值