go的string正则匹配_Go学习笔记-字符串和正则表达式

字符串

字符串长度

获取字符串长度: len()

注意点:len()函数获取字符串长度的时候, 获取的是字节数.一个中文占三个字节

如果想获得的是中文个数,需要将字符串转换为rune类型的切片才行

str1 := "你好"

fmt.Println(len(str1)) // 6

rune1 := []rune(str1)

fmt.Println(len(rune1)) // 2

查找字符串

查找子串在字符串中出现的位置

1.从左至右查找

func IndexByte(s string, c byte) int

func IndexRune(s string, r rune) int

//如果找到了就返回字符在字符串中的位置, 如果没有找到就会-1

//在返回找到的索引的时候, 如果前面有中文, 那么一个中文按照3个索引计算

func IndexAny(s, chars string) int

// 注意点: 从左至右的查找, 一旦找到了, 就不会继续查找的

// 查找时不是将第二个参数当做一个整体查找, 是==拆开==来查找, 返回找到的最前面一个值

func Index(s, sep string) int

//注意点: 从左至右的查找, 一旦找到了, 就不会继续查找的

//查找时会将第二个参数当做一个==整体==查找

func IndexFunc(s string, f func(rune) bool) int

// 注意点: 从左至右的查找, 一旦找到了, 就不会继续查找的

// IndexFunc方法会将字符串转换成一个[]rune, 然后遍历切片,

// 逐个将切片中的元素传递给自定义的函数,只要自定义函数返回true就代表找到了

2.从右至左查找

func LastIndex(s, sep string) int

func LastIndexByte(s string, c byte) int

func LastIndexAny(s, chars string) int

func LastIndexFunc(s string, f func(rune) bool) int

字符串包含

func Contains(s, substr string) bool

// 作用: 判断字符串中是否包含指定的子串

// 如果包含返回true, 如果不包含返回false

func ContainsRune(s string, r rune) bool

// 作用:判断字符串中是否包含指定的字符

// 如果包含返回true,如果不包含返回false

func ContainsAny(s, chars string) bool

// 作用:判断字符串中是否包含指定的子串中任意一个字符

// 如果包含返回true,如果不包含返回false

func HasPrefix(s, prefix string) bool

// 作用:判断字符串是否以指定字符串开头

func HasSuffix(s, suffix string) bool

// 作用:判断字符串是否以指定字符串结尾

字符串比较

func Compare(a, b string) int

// 比较两个字符串

// 如果两个字符串相等,那么返回0

// 如果两个字符串不相等

// 第一个字符串 > 第二个字符串 返回 1

// 第一个字符串 < 第二个字符串 返回 -1

str1 := "www.123.com" //0

str2 := "www.321.com" //-1

str2 := "www.111.com" //1

res := strings.Compare(str1, str2)

func EqualFold(s, t string) bool

// 比较两个字符串是否相等, 相等返回true, 不相等返回false

str1 := "www.123.com"

str2 := "www.123.com"

res := strings.EqualFold(str1, str2) //true

字符串转换

//字符串转换

func ToUpper(s string) string

// 作用:将指定字符串中所有的小写字母转换成大写

// 注意点:会生成一个新的字符串, 不会影响原有的字符串

str1 := "www.123abc.com"

str2 := strings.ToUpper(str1)

fmt.Println(str2) //WWW.123ABC.COM

func ToLower(s string) string

// 作用:将指定字符串中所有的大写字母转换成小写

// 注意点:会生成一个新的字符串, 不会影响原有的字符串

func ToTitle(s string) string

// ToTitle 和 ToUpper 会将小写转换为大写

func ToUpperSpecial(_case unicode.SpecialCase, s string) string

func ToLowerSpecial(_case unicode.SpecialCase, s string) string

func ToTitleSpecial(_case unicode.SpecialCase, s string) string

func Title(s string) string

// 作用: 将单词的首字母大写, 单词之间用空格或者-隔开

字符串拆合

字符串切割

func Split(s, sep string) []string

// 作用:按照指定字符串切割原有字符串

// 注意点: 切割之后的结果, 不包含指定的字符串

func SplitN(s, sep string, n int) []string

// 作用:按照指定字符串切割原有字符串, 切割为指定的份数

// 注意点: 切割之后的结果, 不包含指定的字符串

str1 := "www.123.abc,qwe com"

str2 := strings.SplitN(str1,".", 2)

fmt.Println(str2, len(str2)) //2

func SplitAfter(s, sep string) []string

// 作用:按照指定字符串切割原有字符串

// 注意点: 切割之后的结果, 包含指定的字符串

func SplitAfterN(s, sep string, n int) []string

//切割为指定的分数

按照空格切割字符串

func Fields(s string) []string

// 作用:按照空格切割原有字符串

// 注意点:连续的多个空格会按照一个空格来处理

str2 := strings.Fields(str1)

func FieldsFunc(s string, f func(rune) bool) []string

// 作用: 函数返回true就切割, 返回false就不切割

字符串合并

func Join(a []string, sep string) string

// 作用:按照指定字符连接切片中的元素

sce1 := []string{"www", "123", "com"}

str1 := strings.Join(sce1,".")

fmt.Println(str1)//www.123.com

重复生成字符串

func Repeat(s string, count int) string

// 作用:将原有字符串重复指定次数后生成一个新的字符串

替换重复生成字符串

func Replace(s, old, new string, n int) string

// 作用: 将原有字符串中的, 指定字符串替换为新的字符串

// 最后一个参数用于指定替换多少个, 如果传入-1全部都替换

字符串清理

func Trim(s string, cutset string) string

// 作用:返回字符串前后两端去掉指定字符串之后的新字符串

func TrimLeft(s string, cutset string) string

func TrimRight(s string, cutset string) string

// TrimLeft 只去除左边的

// TrimRight 只去除右边的

func TrimFunc(s string, f func(rune) bool) string

// 作用: 去除指定字符

// 注意点: true去除

func TrimSpace(s string) string

// 作用: 去除两端的空格

func TrimPrefix(s, prefix string) string

func TrimSuffix(s, suffix string) string

// 作用:去除前后缀

正则表达式

正则表达式是一个特殊的字符串, 用于过滤其它的字符串

//需求:取出字符串中所有的123

//1. 定义一个字符串

str := "www.123abcnmb321div123.com"

//2. 创建一个正则表达式对象

regx, _:= regexp.Compile("321")

//3. 利用正则表达式对象, 匹配指定的字符串

res := regx.FindAllString(str, -1)

fmt.Println(res)

//1.从字符串中提取电话号码

str1 := "李abc13554499311def江15812345678def"

regx, _ := regexp.Compile("1\\d{10}")//[13554499311 15812345678]

res := regx.FindAllString(str1, -1)

fmt.Println(res)

//2.从字符串中提取邮箱

str1 := "今天天气很好97606813@qq.cn你吃饭了吗?linanjiang@it666.com"

regx, err := regexp.Compile("[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.[a-zA-Z]+")

res := regx.FindAllString(str1, -1)

fmt.Println(res) //[97606813@qq.cn linanjiang@it666.com]

fmt.Println(err) //

时间和日期

获取当前时间:package time

格式:time.Now()

格式:now.年月日时分秒的英文

tm := time.Now()

str := fmt.Sprintf("当前时间是: %d-%d-%d %d:%d:%d ", tm.Year(), tm.Month(),

tm.Day(), tm.Hour(), tm.Minute(), tm.Second())

fmt.Println(str) //当前时间是: 2019-2-7 20:35:1

时间常量常见的就是配合休眠函数一起使用

for{

time.Sleep(time.Second)

//time.Sleep(time.Millisecond * 1000)

fmt.Println("打印了")

}

Go中的时间戳是从1970年1月1日开始计算的

Unix:返回当前时间距离1970年1月1日有多少秒

UnixNano:返回当前时间距离1970年1月1日有多少纳秒

fmt.Println(time.Now().Unix()) // 1549543386

fmt.Println(time.Now().UnixNano()) // 1549543402102909300

// 创建随机数种子(一定要保证每次运行随机因子都不一样才能真正的生成随机数)

rand.Seed(time.Now().UnixNano())

//生成随机数

res := rand.Intn(3)

fmt.Println(res)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值