这是一个简单的问题,但我仍然无法弄清楚如何去做。
说我有这个字符串:
x := "this string"
'this'和'string'之间的空格默认为常规 unicode空格字符32/U+0020
。如何将其转换为Go中的非破坏 unicode空格字符U+00A0
?
答案 0 :(得分:2)
使用该文档将标准strings
包识别为可能的候选者,然后进行搜索(或通读全部,您应该知道任何语言的标准库/包中可用的内容)你用)找到strings.Map
。
然后,转换任何空格的明显简单的简单解决方案是:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
const nbsp = '\u00A0'
result := strings.Map(func(r rune) rune {
if unicode.IsSpace(r) {
return nbsp
}
return r
}, "this string")
fmt.Printf("%s → %[1]q\n", result)
}
如前所述,如果您真的只想替换" "
,那么也许strings.Replace
。
答案 1 :(得分:-1)
我认为这样做的一个基本方法是创建一个简单的函数:
http://play.golang.org/p/YT8Cf917il
package main
import "fmt"
func ReplaceSpace(s string) string {
var result []rune
const badSpace = '\u0020'
for _, r := range s {
if r == badSpace {
result = append(result, '\u00A0')
continue
}
result = append(result, r)
}
return string(result)
}
func main() {
fmt.Println(ReplaceSpace("this string"))
}
如果您需要更高级的操作,可以使用
创建一些东西"golang.org/x/text/transform"
"golang.org/x/text/unicode/norm"
阅读http://blog.golang.org/normalization了解有关如何使用它的更多信息