Go 语言字符串常见操作

@

目录

1.字节数组

字节和字符的区别

例子

p>

 package main
import "fmt"
func main() {
	var (
		str1 = "hello"
		str2 = "world"
	)
	str3 := str1 + " " + str2
	//字符串转换成字节数组
	tmp := []byte(str3)
	fmt.Printf("数据: %s,长度: %d,数据类型: %Tn", str3, len(str3), str3)
	fmt.Println("字节数组:", tmp)
	fmt.Printf("数据: %s,长度: %d,数据类型: %Tn", tmp, len(tmp), tmp)
	//字节数组转字符串
	fmt.Println("字节数组转字符串:", string(tmp))
	//反转函数调用
	fmt.Println("反转: ", Reverse(str3))
}
//反转函数
func Reverse(str string) string {
	var (
		result string
		leng   int = len(str)
	)
	for i := 0; i < leng; i++ {
		//sprintf转换数据类型为string,使用+进行拼接
		result = result + fmt.Sprintf("%c", str[leng-i-1])
	}
	return result
}
//输出结果如下
数据: hello world,长度: 11,数据类型: string
字节数组: [104 101 108 108 111 32 119 111 114 108 100]
数据: hello world,长度: 11,数据类型: []uint8
字节数组转字符串: hello world
反转:  dlrow olleh

角色

package main
import "fmt"
func main() {
	var a = 88
	fmt.Printf("a的数值: %d , 类型: %Tn", a, a)
	b := fmt.Sprintf("%d", a)
	fmt.Printf("b的数值: %s , 类型: %Tn", b, b)
}
//输出结果如下
a的数值: 88 , 类型: int
b的数值: 88 , 类型: string

2.头尾处理

() 函数判断前缀

() 函数判断后缀

使用函数判断url是否为开头,如果不是,添加

使用函数判断路径是否以/结尾,如果不是,则添加/作为结尾

package main
import (
	"fmt"
	"strings"
)
func main() {
	var (
		url  string
		path string
	)
	fmt.Println("请输入URL和路径:")
	fmt.Scanf("%s%s", &url, &path)
	fmt.Printf("URL: %sn", urlProcess(url))
	fmt.Printf("路径: %s", pathProcess(path))
}
//字符串头部处理
func urlProcess(url string) string {
	//判断是否以http://开头,返回布尔类型赋予result
	result := strings.HasPrefix(url, "http://")
	if !result {
		url = fmt.Sprintf("http://%s", url)
	}
	return url
}
//字符串尾部处理
func pathProcess(path string) string {
	//判断是否以/结尾,返回布尔类型赋予result
	result := strings.HasSuffix(path, "/")
	if !result {
		path = fmt.Sprintf("%s/", path)
	}
	return path
}

终端输入如下:
PS D:goprojectsrctestmain> go run .main.go
请输入URL和路径:
www.google.com /opt/conf/k8s
URL: http://www.google.com
路径: /opt/conf/k8s/

3.位置索引

Index() 函数判断出现在最前面的位置

() 函数判断出现在末尾的位置

判断字符串中第一次出现和最后出现的子串

package main
import (
	"fmt"
	"strings"
)
func main() {
	var (
		a   = "abbaabcddccd"
		str = "cd"
	)
	//判断str在a中首次出现的位置
	head := strings.Index(a, str)
	tail := strings.LastIndex(a, str)
	fmt.Printf("首次出现的位置:%dn最后出现的位置:%dn", head, tail)
}

图片[1]-Go 语言字符串常见操作-唐朝资源网

//输出结果如下 首次出现的位置:6 最后出现的位置:10

4.替换

() 函数

p>

格式如下:

(原始字符串,原始字段,新字符串,新字段,替换次数)

-1表示全部替换,0表示不替换

package main
import (
	"fmt"
	"strings"
)
func main() {
	var (
		a = "abbaabcddccd"
	)
	//把cd替换成CD,-1表示全部替换,0表示不替换
	result := strings.Replace(a, "cd", "CD", -1)
	fmt.Printf("替换前: %vn", a)
	fmt.Printf("全部替换后: %vn", result)
	result1 := strings.Replace(a, "cd", "CD", 0)
	fmt.Printf("不进行替换: %vn", result1)
}
//输出结果如下
替换前: abbaabcddccd
全部替换后: abbaabCDdcCD
不进行替换: abbaabcddccd

5.计数次数

Count() 函数计数次数

package main
import (
	"fmt"
	"strings"
)
func main() {
	var a = "abbcddcedsca"
	count := strings.Count(a, "cd")
	fmt.Printf("count: %vn", count)
}
//输出结果如下
count: 1

@ >

6. 重复

() 函数多次重复输出

package main
import (
	"fmt"
	"strings"
)
func main() {
	var a = "加油~"
	result := strings.Repeat(a, 3)
	fmt.Printf("result: %vn", result)
}

//输出结果如下
result: 加油~加油~加油~

7.大写和小写

() 函数转换大写

() 函数转换小写

package main
import (
	"fmt"
	"strings"
)
func main() {
	var a = "hello"
	//转换大写
	result1 := strings.ToUpper(a)
	fmt.Printf("大写: %vn", result1)
	//把上面转换的大写给转成小写
	result2 := strings.ToLower(result1)
	fmt.Printf("小写: %vn", result2)
}
//输出结果如下
大写: HELLO
小写: hello

8. 删除字符

() 函数删除空白字符

() 从左到右移除

() 从右到左移除

package main
import (
	"fmt"
	"strings"
)
func main() {
	var a = " abc "
	fmt.Println("长度:", len(a))
	//去除首位空白的字符
	result1 := strings.TrimSpace(a)
	fmt.Println("去除首尾空白字符:", result1, "n长度:", len(result1))
}
//输出结果如下
长度: 5
去除首尾空白字符: abc 
长度: 3

package main
import (
	"fmt"
	"strings"
)
func main() {
	var a = "this is test web"
	//去掉字符串首尾部web字符
	result1 := strings.Trim(a, "web")
	fmt.Println("尾部去除:", result1)
	//从左往右删除所有指定的字符,直到遇到不包含在指定的字符为止
	result2 := strings.TrimLeft(a, "this")
	//空格也需匹配删除,直到没有指定的字符可以匹配为止

	result3 := strings.TrimLeft(a, "this ")
	//从右往左删除所有指定的字符,直到遇到不包含在内的字符为止
	result4 := strings.TrimRight(a, "web")
	fmt.Println("从左往右删除:", result2)
	fmt.Println("从左往右删除,有空格:", result3)
	fmt.Println("从右往左删除:", result4)
}
//输出结果如下
尾部去除: this is test 
从左往右删除:  is test web
从左往右删除,有空格: est web
从右往左删除: this is test 

9. 字符串切片处理

() 函数

Split() 函数

package main
import (
	"fmt"
	"strings"
)
func main() {
	var str string = "abc def ghi"
	//Fields函数默认识别的符号是空格
	result1 := strings.Fields(str)
	fmt.Printf("数据类型: %T , 数据格式: %vn", result1, result1)
	for i := 0; i < len(result1); i++ {
		fmt.Println(result1[i])
	}
}
//输出结果如下
数据类型: []string , 数据格式: [abc def ghi]
abc
def
ghi

package main
import (
	"fmt"
	"strings"
)
func main() {
	var str string = "abc,def,ghi"
	//识别逗号进行分隔切片
	result := strings.Split(str, ",")
	fmt.Printf("数据类型: %T , 数据格式: %vn", result, result)
}
//输出结果如下
数据类型: []string , 数据格式: [abc def ghi]

推荐使用Split()函数进行分离

因为()函数默认只能识别空格,不能识别其他符号,而Split()函数可以全部识别

Join() 函数

package main
import (
	"fmt"
	"strings"
)
func main() {
	//定义切片
	var slice = []string{"123", "456", "789"}
	fmt.Printf("切片: %vn", slice)

图片[2]-Go 语言字符串常见操作-唐朝资源网

//切片转换成字符串 result := strings.Join(slice, ":") fmt.Printf("数据结构: %v , 数据类型: %T", result, result) } //输出结果如下 切片: [123 456 789] 数据结构: 123:456:789 , 数据类型: string

10.数值处理

package main
import (
	"fmt"
	"strconv"
)
func main() {
	var num int = 12345678
	fmt.Printf("初始数据类型: %Tn", num)
	fmt.Printf("初始值: %dn", num)
	//转换成字符串
	result := strconv.Itoa(num)
	fmt.Printf("转换后数据类型: %Tn", result)
	fmt.Printf("转换后值为: %s", result)
}
//输出结果如下
初始数据类型: int
初始值: 12345678
转换后数据类型: string
转换后值为: 12345678

package main
import (
	"fmt"
)
func main() {
	var num int = 12345678
	fmt.Printf("初始数据类型: %Tn", num)
	//使用Sprintf()转换成字符串,可以实现多类型的转换
	result := fmt.Sprintf("%d", num)
	fmt.Printf("转换后数据类型:%Tn", result)
}
//输出结果如下
初始数据类型: int
转换后数据类型:string

package main
import "fmt"
func main() {
	var a = 88
	fmt.Printf("a的数值: %d , 类型: %Tn", a, a)
	b := fmt.Sprintf("%d", a)
	fmt.Printf("b的数值: %s , 类型: %Tn", b, b)
}
//输出结果如下
a的数值: 88 , 类型: int
b的数值: 88 , 类型: string

6@>

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片