在我的 Go 项目中,我正在处理亚洲语言并且有双字节字符。就我而言,我有一个包含两个单词的字符串,并且它们之间有一个空格。
EG: こんにちは 世界
现在我需要检查该空间是否是双字节空间,如果是,我需要将其转换为单字节空间。
我已经搜索了很多,但我找不到这样做的方法。由于我想不出办法做到这一点,抱歉,我没有代码示例可在此处添加。
我是否需要遍历每个字符并使用其代码选择双字节空间并替换?我应该使用什么代码来识别双字节空间?
在我的 Go 项目中,我正在处理亚洲语言并且有双字节字符。就我而言,我有一个包含两个单词的字符串,并且它们之间有一个空格。
EG: こんにちは 世界
现在我需要检查该空间是否是双字节空间,如果是,我需要将其转换为单字节空间。
我已经搜索了很多,但我找不到这样做的方法。由于我想不出办法做到这一点,抱歉,我没有代码示例可在此处添加。
我是否需要遍历每个字符并使用其代码选择双字节空间并替换?我应该使用什么代码来识别双字节空间?
只换?
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Replace("こんにちは 世界", " ", " ", -1))
}
请注意,中的第二个参数Replace
是
,作为示例中字符串的复制粘贴。此替换函数将在原始字符串中找到所有匹配的符文并将其替换为 ASCII 空格
在 golang 中没有像双字节字符这样的东西。引擎盖下有特殊类型rune
,int32
符文是 unicode 表示。
你的特殊空间是12288
,普通空间是32
unicode。
要遍历字符,您可以使用 range
for _, char := range chars {...} // char is rune type
要替换此字符,您可以使用strings.Replace
orstrings.Map
并定义函数来替换不需要的字符。
func converter(r rune) rune {
if r == 12288 {
return 32
}
return r
}
result := strings.Map(converter, "こんにちは 世界")
也可以使用字符文字代替数字
if r == ' ' {
return ' '
}