searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

GO常用标准库-bytes和strings-查找与替换

2024-05-24 07:16:56
15
0

一、查找与替换 - 定性查找

  • 所谓“定性查找”就是指返回有(true)和无(false)的查找。
  • bytes包和strings包提供了一组名字相同的定性查找API,包括Contains系列、HasPrefix和HasSuffix。

Contains函数

  • Contains函数返回的是第一个参数代表的字符串/字节切片中是否包含第二个参数代表的字符串/字节切片。
  • 值得注意的是,在这个函数的语义中,任意字符串都包含空串(“”),任意字节切片也都包含空字节切片 ([]byte)及nil切片。

ContainsAny函数

ContainsAny函数的语义:

  1. 将其两个参数看成两个Unicode字符的集合。
  2. 如果两个集合存在不为空的交集,则返回true。
  3. 以 strings.ContainsAny("Golang", "java") 为例。 第一个参数对应的Unicode字符集合为{'G','o','l','a','n','g'} 。
  4. 第二个参数对应的集合为{'j','a','v','a'} 两个集合存在不为空的交集{a}了,因此该函数返回true。

ContainsRune函数

ContainsRune函数的语义:

  1. 用于判断某—个Unicode字符(以码点形式即rune类型值传入)是否包含在第一个参数代表的字符串或字节切片中。

HasPrefix和HasSuffix函数

  1. HasPrefix函数用于判断第二个参数代表的字符串/字节切片是不是第一个参数的前缀。
  2. HasSuffix函数用于判断第二个参数是不是第一个参数的后缀。
  3. 要注意的是,在这两个函数的语义中,空字符串 ("")是任何字符串的前缀和后缀。
  4. 空字节切片([]byte{}) 和nil切片也是任何字节切片的前缀和后缀。

二、查找与替换 - 定位查找

  • 定位查找函数会给出第二个参数代表的字符串/字节切片在第一个参数中第一次出现的位置(下标),如果没有找到,则返回-1。
  • 另外定位查找还有方向性,从左到右为正向定位查找(Index系列),反之为反向定位查找(LastIndex系列)。

  1. 和 ContainsAny 只查看交集是否为空不同,IndexAny函数返回非空交集中第一个字符在第一个参数中的位置信息。
  2. 反向查找空串或nil切片,返回的是第一个参数的长度,但作为位置(下标)信息,这个值己经越界了。
  3. strings包并未提供模糊查找功能,基于正则表达式的模糊查找可以使用标准库在regexp包中提供的实现。

三、查找与替换 - 替换

  • strings包中提供了两种进行字符串替换的方法:Replace函数与 Replacer类型。
  • bytes包中则只提供了Replace函数用于字节切片的替换。

  1. Replace函数广泛用于简单的字符串/字节切片替换。
  2. 最后一个参数是一个整型数,用于控制替换的次数。
  3. 如果传入-1,则全部替换。
  4. ReplaceAll函数本质上等价于最后一个参数传入-1的Replace函数。
  5. Replacer类型实例化时可以传入多组old和new参数,后续在使用Replacer.Replace方法对原字符串进行替换时,可以一次实施多组不同字符串的替换。
0条评论
0 / 1000
f****n
4文章数
0粉丝数
f****n
4 文章 | 0 粉丝
f****n
4文章数
0粉丝数
f****n
4 文章 | 0 粉丝
原创

GO常用标准库-bytes和strings-查找与替换

2024-05-24 07:16:56
15
0

一、查找与替换 - 定性查找

  • 所谓“定性查找”就是指返回有(true)和无(false)的查找。
  • bytes包和strings包提供了一组名字相同的定性查找API,包括Contains系列、HasPrefix和HasSuffix。

Contains函数

  • Contains函数返回的是第一个参数代表的字符串/字节切片中是否包含第二个参数代表的字符串/字节切片。
  • 值得注意的是,在这个函数的语义中,任意字符串都包含空串(“”),任意字节切片也都包含空字节切片 ([]byte)及nil切片。

ContainsAny函数

ContainsAny函数的语义:

  1. 将其两个参数看成两个Unicode字符的集合。
  2. 如果两个集合存在不为空的交集,则返回true。
  3. 以 strings.ContainsAny("Golang", "java") 为例。 第一个参数对应的Unicode字符集合为{'G','o','l','a','n','g'} 。
  4. 第二个参数对应的集合为{'j','a','v','a'} 两个集合存在不为空的交集{a}了,因此该函数返回true。

ContainsRune函数

ContainsRune函数的语义:

  1. 用于判断某—个Unicode字符(以码点形式即rune类型值传入)是否包含在第一个参数代表的字符串或字节切片中。

HasPrefix和HasSuffix函数

  1. HasPrefix函数用于判断第二个参数代表的字符串/字节切片是不是第一个参数的前缀。
  2. HasSuffix函数用于判断第二个参数是不是第一个参数的后缀。
  3. 要注意的是,在这两个函数的语义中,空字符串 ("")是任何字符串的前缀和后缀。
  4. 空字节切片([]byte{}) 和nil切片也是任何字节切片的前缀和后缀。

二、查找与替换 - 定位查找

  • 定位查找函数会给出第二个参数代表的字符串/字节切片在第一个参数中第一次出现的位置(下标),如果没有找到,则返回-1。
  • 另外定位查找还有方向性,从左到右为正向定位查找(Index系列),反之为反向定位查找(LastIndex系列)。

  1. 和 ContainsAny 只查看交集是否为空不同,IndexAny函数返回非空交集中第一个字符在第一个参数中的位置信息。
  2. 反向查找空串或nil切片,返回的是第一个参数的长度,但作为位置(下标)信息,这个值己经越界了。
  3. strings包并未提供模糊查找功能,基于正则表达式的模糊查找可以使用标准库在regexp包中提供的实现。

三、查找与替换 - 替换

  • strings包中提供了两种进行字符串替换的方法:Replace函数与 Replacer类型。
  • bytes包中则只提供了Replace函数用于字节切片的替换。

  1. Replace函数广泛用于简单的字符串/字节切片替换。
  2. 最后一个参数是一个整型数,用于控制替换的次数。
  3. 如果传入-1,则全部替换。
  4. ReplaceAll函数本质上等价于最后一个参数传入-1的Replace函数。
  5. Replacer类型实例化时可以传入多组old和new参数,后续在使用Replacer.Replace方法对原字符串进行替换时,可以一次实施多组不同字符串的替换。
文章来自个人专栏
Go语言
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0