Go语言-字符串

目录

1、字节数组

2、头部处理

3、位置索引

4、替换

5、统计次数

6、重复

7、大小写

8、去除字符

9、切片处理

10、数值处理


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值