如何在Golang中将全角数字转换为Ascii?

arc*_*hie 3 unicode go

如何在golang中将全角字符转换为ascii字符.我的程序中的输入是全宽数字,我需要对它们运行一些计算,所以我假设我必须编写如下的转换函数,在开始映射字节之前,我想知道这是否确实在标准中可用去图书馆

fullWidth:="???"
expected := "123"
func convert(input string) string {
// body
}

expected == convert(fullWidth)
Run Code Online (Sandbox Code Playgroud)

nem*_*emo 6

您可以使用width.Transformer的的golang.org/x/text包装做了改造,但标准库不具有此功能.x/text是许多官方子库之一,其兼容性要求较弱(见此处).

例:

package main

import (
    "fmt"
    "golang.org/x/text/width"
)

func main() {
    s := "???"
    n := width.Narrow.String(s)
    fmt.Printf("%U: %s\n", []rune(s), s)
    fmt.Printf("%U: %s\n", []rune(n), n)
}
Run Code Online (Sandbox Code Playgroud)

  • 因为不在标准库中的包不会在操场中导入(安全性,保持它们是最新的,空间,......) (2认同)