将普通 space/whitespace 转换为不间断 space?
Convert normal space/whitespace to non-breaking space?
这是一个简单的问题,但我仍然不知道该怎么做。
假设我有这个字符串:
x := "this string"
'this' 和 'string' 之间的空白默认为 常规 unicode 空白字符 32/U+0020
。我如何将其转换为 Go 中的 非中断 unicode 空白字符 U+00A0
?
我认为一个基本的方法是创建一个简单的函数:
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 了解有关如何使用它的更多信息
使用文档将标准 strings
包确定为可能的候选者,然后对其进行搜索(或通读所有内容,您应该知道任何语言的标准 library/packages 中可用的内容你使用) 来查找 strings.Map
.
那么将 any 转换为白色 space 的明显简短解决方案是:
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
.
这是一个简单的问题,但我仍然不知道该怎么做。
假设我有这个字符串:
x := "this string"
'this' 和 'string' 之间的空白默认为 常规 unicode 空白字符 32/U+0020
。我如何将其转换为 Go 中的 非中断 unicode 空白字符 U+00A0
?
我认为一个基本的方法是创建一个简单的函数:
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 了解有关如何使用它的更多信息
使用文档将标准 strings
包确定为可能的候选者,然后对其进行搜索(或通读所有内容,您应该知道任何语言的标准 library/packages 中可用的内容你使用) 来查找 strings.Map
.
那么将 any 转换为白色 space 的明显简短解决方案是:
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
.