为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Golang 中的字符串中删除多余的空格/空格?

如何从 Golang 中的字符串中删除多余的空格/空格?

Go
慕桂英3389331 2022-01-10 17:03:31
我想知道如何删除:所有前导/尾随空格或换行符、空字符等。字符串中的任何多余空格(例如“hello[space][space]world”将转换为“hello[space]world”)这是否可以使用单个正则表达式、对国际空格字符的 unicode 支持等?
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

strings像strings.Fields大多数工作一样,您可以使用该软件包取得相当大的进展:


package main


import (

    "fmt"

    "strings"

)


func standardizeSpaces(s string) string {

    return strings.Join(strings.Fields(s), " ")

}


func main() {

    tests := []string{" Hello,   World  ! ", "Hello,\tWorld ! ", " \t\n\t Hello,\tWorld\n!\n\t"}

    for _, test := range tests {

        fmt.Println(standardizeSpaces(test))

    }

}

// "Hello, World !"

// "Hello, World !"

// "Hello, World !"


查看完整回答
反对 回复 2022-01-10
?
当年话下

TA贡献1890条经验 获得超9个赞

似乎您可能希望同时使用\s速记字符类和\p{Zs}Unicode 属性来匹配 Unicode 空格。但是,这两个步骤都不能通过 1 个正则表达式替换来完成,因为您需要两个不同的替换,并且ReplaceAllStringFunc只允许整个匹配字符串作为参数(我不知道如何检查哪个组匹配)。

因此,我建议使用两个正则表达式:

  • ^[\s\p{Zs}]+|[\s\p{Zs}]+$ - 匹配所有前导/尾随空格

  • [\s\p{Zs}]{2,} - 匹配字符串中的 2 个或更多空白符号

示例代码:

package main


import (

    "fmt"

    "regexp"

)


func main() {

    input := "   Text   More here     "

    re_leadclose_whtsp := regexp.MustCompile(`^[\s\p{Zs}]+|[\s\p{Zs}]+$`)

    re_inside_whtsp := regexp.MustCompile(`[\s\p{Zs}]{2,}`)

    final := re_leadclose_whtsp.ReplaceAllString(input, "")

    final = re_inside_whtsp.ReplaceAllString(final, " ")

    fmt.Println(final)

}


查看完整回答
反对 回复 2022-01-10
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

strings.Fields() 在任意数量的空白处拆分,因此:

strings.Join(strings.Fields(strings.TrimSpace(s)), " ")


查看完整回答
反对 回复 2022-01-10
  • 3 回答
  • 0 关注
  • 603 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号