使用golang版本mb_convert_kana标准化平假名,片假名,全角和半角


PicApp出现日历第4天

作为执行某种文本处理时的预处理,我认为有些过程包括将所有平假名转换为片假名并将半角片假名转换为全角片假名,但是在golang中,实现该功能的标准直接,似乎没有包装。 (您可以使用text/unicode/norm进行此操作)

实际上,靠自己实现不是什么大问题,因此可能不足以增加对外部软件包的依赖性。但是,考虑切换和测试某些模式,将其切成一个包装会更方便。

现在,想到这种转换的就是PHP的mb_convert_kana。它提供了常用模式的转换方法,并且它们的任何组合都是可能的 1。我搜索了一个可以使用golang进行相同操作的程序包,但找不到它,所以我成功了。

https://github.com/tomoemon/text_normalizer

下面是一个简单的用法示例。
指定选项以使全角符号变为半角,全角数字变为半角,字母字符变为半角,以及平假名和片假名全角片假名不带有dakuten。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import (
    "fmt"
    "github.com/tomoemon/text_normalizer"
)

func main(){
    s := "# # 5 5 a A a A ? ?? ア ガ あ が"
    n := text_normalizer.NewTextNormalizer(
        text_normalizer.ZenkakuSignToHankaku,
        text_normalizer.ZenkakuNumberToHankaku,
        text_normalizer.AlphabetToHankaku,
        text_normalizer.KanaToZenkakuKatakana,
        text_normalizer.RemoveDakuten)
    fmt.Println(n.Replace(s))
}

输出

1
# # 5 5 a A a A ア カ ア カ ア カ

这样,您可以一次转换一个字符串中包含的多种字符类型。

  • 当我为功能手机提供服务时,您是否帮助我将片假名从一端转换为半角片假名?