Go学习之字符串

Go学习之字符串

strings库

自己常用的一些函数

转大写

strings.ToUpper(s string)

返回string

替换

strings.Replace(s, old, new string, n int)

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

字符串拼接

参考:https://www.bilibili.com/read/cv8981400/

加号拼接

这个过于简单了,就是+,不过字符串是不可变的类型,因此对效率有影响。

sprintf函数

s1 := "hello"
s2 := "word"
s3 := fmt.Sprintf("%s%s", s1, s2) //s3 = "helloword" 

这样写的好处就是不会直接产生临时字符串,但是效率好像也是不是特别高。

Join函数

需要使用strings库,Join函数会先根据字符串数组的内容,计算出一个拼接之后的长度,然后申请对应大小的内存,一个一个字符串填入,在已有一个数组的情况下,这种效率会很高,如果没有的话效率也不高。

s1 := "hello"
s2 := "word"
var str []string = []string{s1, s2} 
s3 := strings.Join(str, "") 
fmt.Print(s3)

buffer.WriteString函数

//需要先导入bytes包
s1 := "字符串"
s2 := "拼接"
//定义Buffer类型
var bt bytes.Buffer
向bt中写入字符串
bt.WriteString(s1)
bt.WriteString(s2)
//获得拼接后的字符串
s3 := bt.String()

这个比较理想,可以当成可变字符使用,对内存的增长也有优化,如果能预估字符串的长度,还可以用 buffer.Grow() 接口来设置 capacity

buffer.Builder函数

//需要先导入Strings包
s1 := "字符串"
s2 := "拼接"
var build strings.Builder
build.WriteString(s1)
build.WriteString(s2)
s3 := build.String()

官方建议用这个,使用方法和上面基本一样。

字符串截取

内置的切片

按字节截取,在处理 ASCII 单字节字符串时非常方便。

s := "abcdef"
fmt.Println(s[1:4])

[]rune

如果是中文或者多字节的字符,就需要用到rune,将字符串转换为 []rune,然后按切片语法截取,再把结果转成字符串。

s := "Go 语言"
rs := []rune(s)
fmt.Println(strings(rs[1:4]))

如果想要更加进一步多字节字符的截取效率,可以参考脚本之家的这篇文章

U1S1,我发现脚本之家的文章质量都不错,要么比较深度,要么比较多样。

int转字符串

  • string转成int:
    • int, err := strconv.Atoi(string)
  • string转成int64:
    • int64, err := strconv.ParseInt(string, 10, 64)
  • int转成string:
    • string := strconv.Itoa(int)
  • int64转成string:
    • string := strconv.FormatInt(int64,10)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇