当前位置: 首页 > 面试题库 >

删除字符串中的所有空格

苏华荣
2023-03-14
问题内容

在Go中从某个任意字符串中剥离所有空格的最快方法是什么。

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

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

有人有更好的方法吗?


问题答案:

以下是一些用于从字符串中剥离所有空格字符的不同方法的基准:(源数据):

BenchmarkSpaceMap-8 2000 1100084 ns / op 221187 B / op 2分配/ 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; 随着遇到更多的非空白字符,逐渐增加分配的空间量
  • SpaceFieldsJoinstrings.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 < b.N; n++ {
    SpaceMap(data)
    }
    }

    func BenchmarkSpaceFieldsJoin(b *testing.B) {
    for n := 0; n < b.N; n++ {
    SpaceFieldsJoin(data)
    }
    }

    func BenchmarkSpaceStringsBuilder(b *testing.B) {
    for n := 0; n < b.N; n++ {
    SpaceStringsBuilder(data)
    }
    }



 类似资料:
  • 我有一个sql字符串检索三列的数据,我不想在这些列之间有任何空间。我想删除列之间的空间。 我的客户要求是 MY输出就像

  • 问题内容: 我想从字符串的两端和单词之间消除所有空格。 我有这个Python代码: 但这仅消除了字符串两侧的空白。如何删除所有空格? 问题答案: 如果要删除开头和结尾的空格,请使用: 如果要删除所有空格字符,请使用: (注意,这只会删除“常规” ASCII空格字符,而不会删除任何其他空白) 如果要删除重复的空格,请使用:

  • 在SQL服务器2008中,从字符串中删除所有空格的最佳方法是什么? <代码> LtrIM(rTimm(‘a b’))< /> >将删除字符串的左、右所有空间,但我还需要删除中间的空间。

  • 问题内容: 如何删除python字符串中的所有空格?例如,我希望将一个字符串转换为,但是我似乎无法通过以下方式完成此操作: 问题答案: 利用没有sep参数的str.split的行为: 如果只想删除空格而不是所有空格: 过早优化 尽管效率不是主要目标(编写清晰的代码是),但以下是一些初始时间: 请注意,正则表达式已缓存,因此它没有您想象的那么慢。编译事前帮助一些,但在实践中,如果你把这个只会重要 很

  • 问题内容: 我需要从字符串中删除所有特殊字符,标点符号和空格,以便只有字母和数字。 问题答案: 这可以不用正则表达式来完成: 您可以使用: 如果您坚持使用正则表达式,则其他解决方案也可以。但是请注意,如果可以在不使用正则表达式的情况下完成此操作,那么这是最好的解决方法。

  • 问题内容: 我使用的框架会不时返回格式错误的字符串,其中包含“空”字符。 例如,“ foobar”表示为:[,f,o,o,b,a,r] 第一个字符不是空格(’‘),因此System.out.printlin()将返回“ foobar”而不是“ foobar”。但是,String的长度是7,而不是6。显然,这使大多数String方法(等于,拆分,子字符串等)变得无用。有没有办法从字符串中删除空字符?