如何将Unicode char更改为简单形式?

时间:2019-02-09 11:37:00

标签: go unicode

是否有一个Go库可以接受Sjöström作为输入并返回Sjostrom作为输出?

1 个答案:

答案 0 :(得分:2)

您可以使用golang.org/x/text/unicode/norm处理此问题。

package main

import (
    "fmt"
    "io/ioutil"
    "strings"
    "unicode"

    "golang.org/x/text/transform"
    "golang.org/x/text/unicode/norm"
)

func main() {

    isMn := func(r rune) bool {
        return unicode.Is(unicode.Mn, r) // Mn: nonspacing marks
    }
    t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)

    r := strings.NewReader("Sjöström")
    x := transform.NewReader(r, t)
    b, err := ioutil.ReadAll(x)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(b))

}

另请参阅:https://blog.golang.org/normalization