3 回答

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 !"

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)
}

TA贡献1796条经验 获得超4个赞
strings.Fields() 在任意数量的空白处拆分,因此:
strings.Join(strings.Fields(strings.TrimSpace(s)), " ")
- 3 回答
- 0 关注
- 603 浏览
添加回答
举报