登录
首页 >  Golang >  Go问答

从字符串中删除所有空格

来源:Golang技术栈

时间:2023-04-09 20:42:56 260浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《从字符串中删除所有空格》,主要介绍了golang,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

从 Go 中的任意字符串中去除所有空格的最快方法是什么?

我从字符串包中链接两个函数:

response = strings.Join(strings.Fields(response),"")

有人有更好的方法来做到这一点吗?

正确答案

以下是从字符串中去除所有空白字符的几种不同方法的一些基准:(源数据):

BenchmarkSpaceMap-8 2000 1100084 ns/op 221187 B/op 2 allocs/op
BenchmarkSpaceFieldsJoin-8 1000 2235073 ns/op 2299520 B/op 20 allocs/op
BenchmarkSpaceStringsBuilder-8 2000 932298 ns/op 122880 B/op 1 allocs/op
  • SpaceMap: 使用strings.Map; 随着遇到更多非空白字符,逐渐增加分配的空间量

  • SpaceFieldsJoin:strings.Fieldsstrings.Join; 产生大量中间数据

  • SpaceStringsBuilder用途strings.Builder;执行单个分配,但如果源字符串主要是空格,则可能会严重过度分配。

    package main_test

    import ( "strings" "unicode" "testing" )

    func SpaceMap(str string) string { return strings.Map(func(r rune) rune { if unicode.IsSpace(r) { return -1 } return r }, str) }

    func SpaceFieldsJoin(str string) string { return strings.Join(strings.Fields(str), "") }

    func SpaceStringsBuilder(str string) string { var b strings.Builder b.Grow(len(str)) for _, ch := range str { if !unicode.IsSpace(ch) { b.WriteRune(ch) } } return b.String() }

    func BenchmarkSpaceMap(b *testing.B) { for n := 0; n

    func BenchmarkSpaceFieldsJoin(b *testing.B) { for n := 0; n

    func BenchmarkSpaceStringsBuilder(b *testing.B) { for n := 0; n

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>