一尘不染

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

go

我想知道如何删除:

  • 所有 前导/尾随 空格或换行符,空字符等。
  • 字符串中的任何多余空格(例如,“ hello [space] [space] world”将转换为“ hello [space] world”)

单个正则表达式,对国际空格字符的unicode支持等是否可行?


阅读 1952

收藏
2020-07-02

共1个答案

一尘不染

似乎您可能希望同时使用\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)
}
2020-07-02