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