кажется, что вы можете использовать как \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)
}
'' 'strings.TrimSpace()' '' –
Было бы чище, чтобы определить простую функцию .... –
' s: = strings.TrimSpace (строки. Replace (orig, "", "", -1)) 'кажется довольно простым. Космические символы обычно являются просто пространством ASCII. Если вы получаете разные символы пробела, вам нужно обращаться с ними явно. – elithrar