全角&半角转换

简介

在计算机字符被设计时,西方字符,例如拉丁字母、符号和数字都被归位到了「1字节」所能表示的「256」个空间中。随着计算机向全世界的普及和发展,在东亚地区(中、日、韩),由于这些国家的字符太多,所以必须使用「2个字节」来编码使得能够容纳「65536」个字符。

简单地讲,全角字符占用2个字节位置,半角字符(Half-width characters)占用1个字节位置。

原理

全角字符unicode编码从65281~65374,半角字符unicode编码从33~126,全角空格为12288,半角空格为32,其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248

实现

// 全角转半角
func DbcToSbc(s string) string {
	var strLst []string
	for _, i := range s {
		insideCode := i
		if insideCode == 12288 {
			insideCode = 32
		} else {
			insideCode -= 65248
		}
		if insideCode < 32 || insideCode > 126 {
			strLst = append(strLst, string(i))
		} else {
			strLst = append(strLst, string(insideCode))
		}
	}
	return strings.Join(strLst, "")
}

0 评论
最新
最旧 最多投票
内联反馈
查看所有评论
滚动至顶部