google了半天咏删,并沒(méi)有很清晰的答案秦士,這里記錄下马昙;
golang里面完成這件事情是用rune和strings里面的方法榄檬,
其實(shí)golang里面可是實(shí)現(xiàn)任意字符的轉(zhuǎn)換卜范,首先你需要一張unicode的編碼表:
然后根據(jù)此編碼表進(jìn)行轉(zhuǎn)換,話不多鹿榜,上代碼:
numConv := unicode.SpecialCase{
unicode.CaseRange{
0x3002, // Lo 全角句號(hào)
0x3002, // Hi 全角句號(hào)
[unicode.MaxCase]rune{
0, // UpperCase
0x002e - 0x3002, // LowerCase 轉(zhuǎn)成半角句號(hào)
0, // TitleCase
},
},
//
unicode.CaseRange{
0xff01, // Lo: 全角海雪!
0xFF19, // Hi:到全角 9
[unicode.MaxCase]rune{
0, // UpperCase
0x0021 - 0xff01, // LowerCase 轉(zhuǎn)成半角
0, // TitleCase
},
},
}
fmt.Println(strings.ToLowerSpecial(numConv, "。犬缨,()-1喳魏!@234567890abc123456789abc"))
//.,()-1!@234567890abc123456789abc