golang 中strings包的Replace的使用说明
作者:kph_Hajash 发布时间:2024-02-09 16:02:04
标签:golang,strings,Replace
函数声明为:
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
0
投稿
猜你喜欢
- 如下所示:# coding = GBKa =[1,2,3,4,5]sum=0b = len(a)print("这个数组的长度为:&
- mysqladmin 工具的使用格式:mysqladmin [option] command [command option] comman
- 下面这个函数使用FSO对象来判断服务器上的某个文件是否存在:<%Private Function Dir(byVa
- 正文 curl,用于发送请求的命令行工具,一个 HTTP 请求客户端(实际上它也可以做 FTP/SCP/TELNET 协议的事情,
- 一、创建一个线程通过实例化threading.Thread类创建线程import threadingdef func(s):print(s)
- 如何在php中判断一个网页请求是ajax请求还是普通请求?你可以通过传递参数的方法来实现,例如使用如下网址请求:/path/to/pkphp
- 根据"客服果果"的"十几行的超简日历组件"http://bbs.51js.com/viewthrea
- 本文实例讲述了Django框架表单操作。分享给大家供大家参考,具体如下:HTML表单是网站交互性的经典方式。 开始学习如何用Django对用
- 我就废话不多说了,直接上代码吧!#全0和全1矩阵v1 = tf.Variable(tf.zeros([3,3,3]), name="
- matplotlib简介matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行
- Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法一、问题描述
- 目的现有两幅栅格图像,一个是某地区道路栅格图,一个是某地区土地利用类型图,需要将道路叠加到土地利用类型图中,即叠加后,重合的像元值以道路图为
- 现在大家都在讨论Web2.0 ,大家都在搞用户行为前端设计,现在注册一个ID一般只需要几秒钟,站长期望其产生高价值的UGC,形成一个只需要审
- 继上篇博客Python实现简易通讯录后,我就想写一个复杂点的学生信息管理系统,这次实现的功能有1.学生信息的录入管理;2.学生选课操作;3.
- 话说凌晨刚折腾完一台MySQL 5.7.19版本的安装,未曾料到早上MySQL官方就发布了最新的5.7.20版本。这个版本看似更新不多,但是
- 如果你想进一步了解如何用JavaScript来为网页添加交互性的话,你也许已经听过JavaScript的事件代理(event delegat
- 以下是个人在学习beautifulSoup过程中的一些总结,目前我在使用爬虫数据时使用的方法的是:先用find_all()找出需要内容所在的
- 首先,我们来看一个Python抓取网页的库:urllib或urllib2。那么urllib与urllib2有什么区别呢?可以把urllib2
- HTTP、HTTPS协议下session共享解决cookie失效 的办法:(也许不是最好的,但是实用)原理就是把session id设置到本
- 前言logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。可以通过设置不同的日志