目录
1、字节数组
示例:输出字节数组。
package main
import "fmt"
func main() {
var (
str1 = "hello"
str2 = "world"
)
result := str1 + " " + str2
fmt.Printf("数据:%s,长度:%d,数据类型:%T\n", result, len(result), result)
//转换成字节数组
tmp := []byte(result)
fmt.Printf("tmp数据:%s,长度:%d,数据类型:%T\n", tmp, len(tmp), tmp)
//遍历所有字节数组
for i := 0; i < len(tmp); i++ {
//字节转化字符串
fmt.Println(string(tmp[i]))
}
fmt.Println(string(tmp))
}
//运行结果为:
数据:hello world,长度:11,数据类型:string
tmp数据:hello world,长度:11,数据类型:[]uint8
h
e
l
l
o
w
o
r
l
d
hello world
示例:方向输出字节数组。
package main
import "fmt"
func main() {
var (
str1 = "hello"
str2 = "world"
)
result := str1 + " " + str2
tmp := []byte(result)
fmt.Println("正常:", string(tmp))
fmt.Println("反转:", Revers(result))
}
//反向函数
func Revers(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
反转: dlrow olleh
2、头部处理
示例:判断字符串s是否以prefix开头,判断URL是否以"http://"为开头,如果不是,则加上"http://"。
判断字符串s是否以suffix结尾,判断路径是否以"/"为结尾,如果不是,则加上"/"为结尾。
package main
import (
"fmt"
"strings"
)
func main() {
var (
url string
path string
)
//输入两个值
fmt.Scanf("%s%s", &url, &path)
fmt.Println(urlProcess(url))
fmt.Println(pathProcess(path))
}
//头部判断是否包含http://,如果不包含,则加上http://
func urlProcess(url string) string {
//返回的result类型是bool
result := strings.HasPrefix(url, "http://")
if !result {
url = fmt.Sprintf("http://%s", url)
}
return url
}
//尾部判断是否包含"/",如果不包含加上"/"
func pathProcess(path string) string {
//返回的result类型是bool
result := strings.HasSuffix(path, "/")
if !result {
path = fmt.Sprintf("%s/", path)
}
return path
}
//运行结果为:
www.baidu.com /root/bin
http://www.baidu.com
/root/bin/
3、位置索引
示例:判断字符串在字符串中首次出现的位置和从末尾出现的位置。
package main
import (
"fmt"
"strings"
)
//判断关键字段在字符串中出现的索引位置
func main() {
var (
s string = "abcdbafafvgcdgl"
str string = "cd"
)
start := strings.Index(s, str)
fmt.Println("关键字首部出现的位置:", start)
end := strings.LastIndex(s, str)
fmt.Println("关键字尾部出现的位置:", end)
}
//运行结果为:
关键字首部出现的位置: 2
关键字尾部出现的位置: 11
4、替换
示例:在一个字符串中替换新字段。
package main
import (
"fmt"
"strings"
)
//判断关键字段在字符串中出现的索引位置
func main() {
var (
s string = "abcdbafafvgcdglcd"
str string = "cd"
)
//替换Replace(原字符串,原字段,新字段,替换次数),-1表示替换全部字段,0表示不替换。
result := strings.Replace(s, str, "CD", -1)
fmt.Println("替换字符串:", result)
}
//运行结果为:
替换字符串: abCDbafafvgCDglCD
5、统计次数
示例:统计一个关键字出现在字符串中的次数。
package main
import (
"fmt"
"strings"
)
//判断关键字段在字符串中出现的索引位置
func main() {
var (
s string = "abcdbafafvgcdglcd"
str string = "cd"
)
//使用cout统计关键字出现在字符串中的次数
count := strings.Count(s, str)
fmt.Println("cd关键字出现的次数:", count)
}
//运行结果为:
cd关键字出现的次数: 3
6、重复
示例:让一个字符串重复出现多次。
package main
import (
"fmt"
"strings"
)
func main() {
var (
s = "abc"
)
//重复
result := strings.Repeat(s, 3)
fmt.Println("重复结果为:", result)
}
//运行结果为:
重复结果为: abcabcabc
7、大小写
示例:改变字符串英文的大小写。
package main
import (
"fmt"
"strings"
)
func main() {
var s = "aBc"
//转换大写
result1 := strings.ToUpper(s)
fmt.Println("大写:", result1)
//转换小写
result2 := strings.ToLower(result1)
fmt.Println("小写:", result2)
}
//运行结果为:
大写: ABC
小写: abc
8、去除字符
示例:去除首位空白字符。
package main
import (
"fmt"
"strings"
)
func main() {
var s = " abc "
fmt.Printf("原长度:%d\n", len(s))
//去除首位空白字符
result := strings.TrimSpace(s)
fmt.Printf("现长度:%d,内容:%s\n", len(result), result)
}
//运行结果为:
原长度:5
现长度:3,内容:abc
示例:去除匹配到的字符。
package main
import (
"fmt"
"strings"
)
func main() {
var s = "this is abc"
fmt.Println("原长度:", len(s))
//定义删除的字符
result := strings.Trim(s, "abc")
fmt.Println("处理后的字符串:", result)
}
//运行结果为:
原长度: 11
处理后的字符串: this is
示例:删除包含到的字符。
package main
import (
"fmt"
"strings"
)
func main() {
var s = "this is abc web"
fmt.Println("原长度:", len(s))
result := strings.TrimLeft(s, "thisa ")
fmt.Println("处理后的字符串:", result)
}
//运行结果为:
原长度: 15
处理后的字符串: bc web
9、切片处理
示例:默认使用空格分割。
package main
import (
"fmt"
"strings"
)
func main() {
var s string = "abc def xyz"
//转换切片,默认识别空格分隔
result := strings.Fields(s)
fmt.Printf("数据类型:%T\n数据内容:%v", result, result)
}
//运行结果为:
数据类型:[]string
数据内容:[abc def xyz]
示例:以指定的符号转换成切片。
package main
import (
"fmt"
"strings"
)
func main() {
var s string = "abc,def,xyz"
//转换切片,以“,”作为分割符
result := strings.Split(s, ",")
fmt.Printf("数据类型:%T\n数据内容:%v", result, result)
}
//运行结果为:
数据类型:[]string
数据内容:[abc def xyz]
示例:切片转为为字符串。
package main
import (
"fmt"
"strings"
)
func main() {
//定义切片
var slice = []string{"123", "456", "789"}
fmt.Printf("切片:%v\n", slice)
//切片转化为字符串
result := strings.Join(slice, "")
fmt.Printf("数据结构:%v,%T\n", result, result)
}
//运行结果为:
切片:[123 456 789]
数据结构:123456789,string
10、数值处理
示例:数据类型转换。
package main
import (
"fmt"
"strconv"
)
func main() {
var num int = 123456
fmt.Printf("num的数据类型:%T\n", num)
//数值转化字符串
result := strconv.Itoa(num)
fmt.Printf("result的数据类型:%T\n", result)
fmt.Println("内容:", result)
}
//运行结果为:
num的数据类型:int
result的数据类型:string
内容: 123456
示例:用sprintf函数处理。
package main
import (
"fmt"
)
func main() {
var num int = 123456
fmt.Printf("num的数据类型:%T\n", num)
//使用Sprintf()转换字符串,可以实现多类型转化
result := fmt.Sprintf("%d", num)
fmt.Printf("result的数据类型:%T\n", result)
}
//运行结果为:
num的数据类型:int
result的数据类型:string
示例:字符串转整型。
package main
import (
"fmt"
"strconv"
)
func main() {
var str string = "123456"
//字符串转整型
result, err := strconv.Atoi(str)
if err == nil {
fmt.Printf("数据类型:%T\n", result)
} else {
fmt.Println(err)
}
}
//运行结果为:
数据类型:int