golang 中strings包的Replace的使用说明

作者:kph_Hajash 时间:2024-02-09 16:02:04 

函数声明为:


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

官方描述为:

返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。

示例代码为,每行的结果见每行上面的注释部分:


func main() {
// non-overlapping: "123" repeat 6 times in s
s := "123lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l"
old := "123"
new := "888"

fmt.Println("non-overlapping: ")
 // n < 0 ,用 new 替换所有匹配上的 old;n=-1: 888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla888l
fmt.Println("n=-1: ", strings.Replace(s, old, new, -1 ))

// 不替换任何匹配的 old;n=0: 123lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l
fmt.Println("n=0: ", strings.Replace(s, old, new, 0 ))

// 用 new 替换第一个匹配的 old;n=1: 888lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l
fmt.Println("n=1: ", strings.Replace(s, old, new, 1 ))

// 用 new 替换前 5 个匹配的 old(实际多于 5 个);n=5: 888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla123l
fmt.Println("n=5: ", strings.Replace(s, old, new, 5 ))

// 用 new 替换前 7 个匹配上的 old(实际没那么多);n=7: 888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla888l
fmt.Println("n=7: ", strings.Replace(s, old, new, 7 ))

// overlapping:
s = "888888888888888888"
old = "888"
new = "666"
fmt.Println("overlapping: ")

// n < 0 ,用 new 替换所有匹配上的 old;n=-1: 666666666666666666
fmt.Println("n=-1: ", strings.Replace(s, old, new, -1 ))

// 不替换任何匹配的 old;n=0: 888888888888888888
fmt.Println("n=0: ", strings.Replace(s, old, new, 0 ))

// 用 new 替换第一个匹配的 old;n=1: 666888888888888888
fmt.Println("n=1: ", strings.Replace(s, old, new, 1 ))

// 用 new 替换前 5 个匹配的 old(实际多于 5 个);n=5: 666666666666666888
fmt.Println("n=5: ", strings.Replace(s, old, new, 5 ))

// 用 new 替换前 7 个匹配上的 old(实际没那么多);n=7: 666666666666666666
fmt.Println("n=7: ", strings.Replace(s, old, new, 7 ))
}

补充:golang_字符串操作: strings包中Contains,Join,Index,Repeat,Split,Trim,Fields的用法介绍

字符串处理

Contains


func Contains(s, substr string) bool

判断字符串s是否包含子串substr。


fmt.Println(strings.Contains("seafood", "foo")) //true

Join


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

将一系列字符串连接为一个字符串,之间用sep来分隔。


s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", ")) //foo, bar, baz

Index

查找子串的位置


func Index(s, sep string) int

子串sep在字符串s中第一次出现的位置,不存在则返回-1。


fmt.Println(strings.Index("chicken", "ken")) //4
fmt.Println(strings.Index("chicken", "dmr")) //不包含子串返回-1

Repeat


func Repeat(s string, count int) string

返回count个s串联的字符串。


fmt.Println("ba" + strings.Repeat("na", 2)) //banana

Split

以指定的分隔符拆分,返回一组切片


func Split(s, sep string) []string

用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,

即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。


fmt.Printf("%q\n", strings.Split("a,b,c", ",")) //%q 输出格式为:带引号的字符串
fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
fmt.Printf("%q\n", strings.Split(" xyz ", ""))
fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))

Output:


["a" "b" "c"]
["" "man " "plan " "canal panama"]
[" " "x" "y" "z" " "]
[""] //若分隔符在原字符串中不存在,返回原字符串切片

Trim

去掉两端的字符


func Trim(s string, cutset string) string

返回将s前后端==所有==cutset包含的utf-8码值都去掉的字符串。


fmt.Println(strings.Trim(" !!! Achtung! Achtung! !!! ", "! "))
// Achtung! Achtung
// 会去掉字符串两端所有的"!"和" "

Fields

去掉空格,把元素放入切片中


func Fields(s string) []string

返回将字符串按照空白(unicode.IsSpace确定,可以是一到多个连续的空白字符)

分割的多个字符串。如果字符串全部是空白或者是空字符串的话,会返回空切片。


fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz "))
// Fields are: ["foo" "bar" "baz"]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://blog.csdn.net/chuanglan/article/details/80749162

标签:golang,strings,Replace
0
投稿

猜你喜欢

  • python实现监控linux性能及进程消耗性能的方法

    2021-10-20 03:27:56
  • Python3逻辑运算符与成员运算符

    2021-03-29 18:59:14
  • mysql数据库删除重复数据只保留一条方法实例

    2024-01-28 06:17:49
  • VSCode + WSL 2 + Ruby环境搭建图文详解

    2022-09-10 21:05:38
  • 如何通过python实现IOU计算代码实例

    2021-07-09 02:06:44
  • 20个解决日常编程问题的Python代码分享

    2021-02-14 03:57:41
  • python Tkinter的图片刷新实例

    2023-10-31 04:32:24
  • SQL Server 连接到服务器 错误233的解决办法

    2024-01-24 06:58:34
  • JavaScript中创建原子的方法总结

    2023-06-29 12:22:14
  • BootStrap点击下拉菜单项后显示一个新的输入框实现代码

    2024-04-16 08:54:39
  • Python操作注册表详细步骤介绍

    2023-09-16 01:05:53
  • SQL语句优化方法30例(推荐)

    2024-01-14 21:55:35
  • python sleep和wait对比总结

    2023-04-30 18:26:04
  • JavaScript图片放大镜效果

    2009-10-19 22:15:00
  • python的常见命令注入威胁

    2022-08-14 10:19:21
  • python3实现字符串操作的实例代码

    2023-08-23 06:24:31
  • Python 文件处理之open()函数

    2021-03-04 02:26:49
  • MySQL插入时间差八小时问题的解决方法

    2024-01-28 22:00:09
  • Python文本统计功能之西游记用字统计操作示例

    2023-08-10 00:12:59
  • python查找与排序算法详解(示图+代码)

    2023-08-05 13:27:26
  • asp之家 网络编程 m.aspxhome.com