猿问

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

我想知道如何删除:

  • 所有前导/尾随空格或换行符、空字符等。

  • 字符串中的任何多余空格(例如“hello[space][space]world”将转换为“hello[space]world”)

这是否可以使用单个正则表达式、对国际空格字符的 unicode 支持等?


慕桂英3389331
浏览 604回答 3
3回答

HUH函数

strings像strings.Fields大多数工作一样,您可以使用该软件包取得相当大的进展:package mainimport (    "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 !"

当年话下

似乎您可能希望同时使用\s速记字符类和\p{Zs}Unicode 属性来匹配 Unicode 空格。但是,这两个步骤都不能通过 1 个正则表达式替换来完成,因为您需要两个不同的替换,并且ReplaceAllStringFunc只允许整个匹配字符串作为参数(我不知道如何检查哪个组匹配)。因此,我建议使用两个正则表达式:^[\s\p{Zs}]+|[\s\p{Zs}]+$ - 匹配所有前导/尾随空格[\s\p{Zs}]{2,} - 匹配字符串中的 2 个或更多空白符号示例代码:package mainimport (    "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)}

慕的地8271018

strings.Fields() 在任意数量的空白处拆分,因此:strings.Join(strings.Fields(strings.TrimSpace(s)), " ")
随时随地看视频慕课网APP

相关分类

Go
我要回答