目录
GO字符串
字节数组
package main
import "fmt"
func main() {
var (
str1 = "hello"
str2 = "world"
)
str3 := str1 + "" + str2 //字符串转换成字节数组
tmp := []byte(str3)
fmt.Println(str3)
fmt.Println("字节数组", tmp)
fmt.Println("字节数组转字符串: ", string(tmp))
//反转函数调用
fmt.Println("反转:", Reverse(str3))
}
//反转
func Reverse(str string) string {
var (
result string
leng int = len(str)
)
for i := leng - 1; i >= 0; i-- {
result = result + fmt.Sprintf("%c", str[i])
}
return result
}
运行结果:
helloworld
字节数组 [104 101 108 108 111 119 111 114 108 100]
字节数组转字符串: helloworld
反转: dlrowolleh
头尾处理
示例:判断字符串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(Urlperix(url))
fmt.Println(Pathperix(path))
}
func Urlperix(url string) string {
result := strings.HasPrefix(url, "http://")
if !result {
url = fmt.Sprintf("http://%s", url)
}
return url
}
func Pathperix(path string) string {
result := strings.HasPrefix("/", path)
if !result {
path = fmt.Sprintf("%s/",path)
}
return path
}
运行结果
PS D:\golang\src\day15\demo3\HashPeri> go run .\main.go
www.baidu.com /root/go
http://www.baidu.com
/root/go/
strings使用
1、位置索引
示例:判断子字符串在字符串中首次出现的位置和从末尾出现的位置。
package main
import (
"fmt"
"strings"
)
func main() {
var (
a = "abcdefcdffrdccdkjcd"
b = "cd"
)
couts := strings.Index(a,b)
fmt.Println("b在a中第一次出现得位置:",couts)
couts1 := strings.LastIndex(a,b)
fmt.Println("从后往前b在a中第一次出现得位置:",couts1)
}
运行结果
b在a中第一次出现得位置: 2
从后往前b在a中第一次出现得位置: 17
2、替换
package main
import (
"fmt"
"strings"
)
fune main() {
var (
s = "abbaabcddccd"
)
//把cd换成CD,-1表示全部替换0表示不替换
result := strings.Replace(s, "cd" ,"CD",-1)
fmt .Print1n(result)
}
运行结果
abbaabCDdcCD
3、统计次数
package main
import (
"fmt"
"strings"
)
func main() {
var (
a = "abcdefcdffrdccdkjcd"
b = "cd"
)
s :=strings.Count(a,b)
fmt.Println("b在a中出现得次数",s)
}
运行结果
b在a中出现得次数 4
4、重复
package main
import (
"fmt"
"strings"
)
func main() {
var a = "abc"
b := strings.Repeat(a,3)
fmt.Println("输出结果:",b)
}
运行结果
输出结果: abcabcabc
5、大小写
package main
import (
"fmt"
"strings"
)
func main() {
var a = "abc"
restlu1 := strings.ToUpper(a)
fmt.Printf("大写为%v\n", restlu1)
restlu2 := strings.ToLower(a)
fmt.Printf("小写为%v", restlu2)
}
运行结果
大写为ABC
小写为abc
6、去除字符
去除首尾字符
package main
import (
"fmt"
"strings"
)
func main() {
var b = " abc "
fmt.Println("长度为:",len(b))
num := strings.TrimSpace(b)
fmt.Printf("b输出结果为%s,字符长度为%d\n", num, len(num))
}
运行结果
长度为: 5
b输出结果为abc,字符长度为3
去除首尾和指定位置字符
package main
import (
"fmt"
"strings"
)
func main() {
var a = "this is abc web"
//从左向右删除a中所有相匹配的字符,直到不匹配为止
num1 := strings.TrimLeft(a, " this") //空格也算
fmt.Println(num1)
//从右向左删除a中所有相匹配的字符,直到不匹配为止
num2 := strings.TrimRight(a, " cweb")
fmt.Println(num2)
//去掉字符串首尾部web
num3 := strings.Trim(a, "web")
fmt.Printf("%v", num3)
}
运行结果
abc web
this is a
this is abc
7、切片处理
package main
import (
"fmt"
"strings"
)
func main() {
var a = "abc def ghi"
//fields只识别空格
restlu := strings.Fields(a)
fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu, restlu)
for i := 0; i < len(restlu); i++ {
fmt.Println(restlu[i])
}
}
运行结果
数据类型为[]string
数据内容是[abc def ghi]
abc
def
ghi
示例,以指定符号分隔转换为切片
package main
import (
"fmt"
"strings"
)
func main() {
var a = "abc,def,ghi"
//fields只识别空格
restlu := strings.Split(a, ",")
fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu, restlu)
}
运行结果
数据类型为[]string
数据内容是[abc def ghi]
把切片按指定分隔符和在一起
package main
import (
"fmt"
"strings"
)
func main() {
var a = "abc def ghi"
//fields只识别空格
restlu := strings.Split(a, " ")
fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu, restlu)
restlu2 := strings.Join(restlu, ",")
fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu2, restlu2)
}
运行结果
数据类型为[]string
数据内容是[abc def ghi]
数据类型为string
数据内容是abc,def,ghi
8、数值处理
示例:数值转换成字符串。
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("nur数据类型:%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