全形轉半形實現

2022-03-08 08:28:32 字數 4450 閱讀 3247

首先,需要明確為什麼要把全形轉換成半形。

一般在業務實現中,日文或英文可以輸入全形,同樣的名字用全形和半形輸入應該代表同乙個意思,

但是在排序中全形要排在半形的後面,這不符合某些人(當然,是所謂產品經理)的邏輯,那只有硬著頭皮分析轉換咯;

下面我們來看全形和半形所在的unicode區間對照表:

ascii

全形字符

unicode

半形字元

unicode

0x20

""空格

u+3000

" "空格

u+0020

0x21

!u+ff01

!u+0021

0x22

"u+ff02

"u+0022

0x23

#u+ff03

#u+0023

0x24

$u+ff04

$u+0024

0x25

%u+ff05

%u+0025

0x26

&u+ff06

&u+0026

0x27

『u+ff07

『u+0027

0x28

(u+ff08

(u+0028

0x29

)u+ff09

)u+0029

0x2a

*u+ff0a

*u+002a

0x2b

+u+ff0b

+u+002b

0x2c

,u+ff0c

,u+002c

0x2d

-u+ff0d

-u+002d

0x2e

.u+ff0e

.u+002e

0x2f

/u+ff0f

/u+002f

0x30

0u+ff10

0u+0030

0x31

1u+ff11

1u+0031

0x32

2u+ff12

2u+0032

0x33

3u+ff13

3u+0033

0x34

4u+ff14

4u+0034

0x35

5u+ff15

5u+0035

0x36

6u+ff16

6u+0036

0x37

7u+ff17

7u+0037

0x38

8u+ff18

8u+0038

0x39

9u+ff19

9u+0039

0x3a

:u+ff1a

:u+003a

0x3b

;u+ff1b

;u+003b

0x3c

<

u+ff1c

<

u+003c

0x3d

=u+ff1d

=u+003d

0x3e

>

u+ff1e

>

u+003e

0x3f

?u+ff1f

?u+003f

0x40

@u+ff20

@u+0040

0x41

au+ff21

au+0041

0x42

bu+ff22

bu+0042

0x43

cu+ff23

cu+0043

0x44

du+ff24

du+0044

0x45

eu+ff25

eu+0045

0x46

fu+ff26

fu+0046

0x47

gu+ff27

gu+0047

0x48

hu+ff28

hu+0048

0x49

iu+ff29

iu+0049

0x4a

ju+ff2a

ju+004a

0x4b

ku+ff2b

ku+004b

0x4c

lu+ff2c

lu+004c

0x4d

mu+ff2d

mu+004d

0x4e

nu+ff2e

nu+004e

0x4f

ou+ff2f

ou+004f

0x50

pu+ff30

pu+0050

0x51

qu+ff31

qu+0051

0x52

ru+ff32

ru+0052

0x53

su+ff33

su+0053

0x54

tu+ff34

tu+0054

0x55

uu+ff35

uu+0055

0x56

vu+ff36

vu+0056

0x57

wu+ff37

wu+0057

0x58

xu+ff38

xu+0058

0x59

yu+ff39

yu+0059

0x5a

zu+ff3a

zu+005a

0x5b

[u+ff3b

[u+005b

0x5c

\u+ff3c

\u+005c

0x5d

]u+ff3d

]u+005d

0x5e

^u+ff3e

^u+005e

0x5f

_u+ff3f

_u+005f

0x60

『u+ff40

`u+0060

0x61

au+ff41

au+0061

0x62

bu+ff42

bu+0062

0x63

cu+ff43

cu+0063

0x64

du+ff44

du+0064

0x65

eu+ff45

eu+0065

0x66

fu+ff46

fu+0066

0x67

gu+ff47

gu+0067

0x68

hu+ff48

hu+0068

0x69

iu+ff49

iu+0069

0x6a

ju+ff4a

ju+006a

0x6b

ku+ff4b

ku+006b

0x6c

lu+ff4c

lu+006c

0x6d

mu+ff4d

mu+006d

0x6e

nu+ff4e

nu+006e

0x6f

ou+ff4f

ou+006f

0x70

pu+ff50

pu+0070

0x71

qu+ff51

qu+0071

0x72

ru+ff52

ru+0072

0x73

su+ff53

su+0073

0x74

tu+ff54

tu+0074

0x75

uu+ff55

uu+0075

0x76

vu+ff56

vu+0076

0x77

wu+ff57

wu+0077

0x78

xu+ff58

xu+0078

0x79

yu+ff59

yu+0079

0x7a

zu+ff5a

zu+007a

0x7b

u+ff5d

}u+007d

0x7e

~u+ff5e

~u+007e

仔細的小夥伴可以發現,除了第乙個空格的全半形unicode編碼值為(0x3000-0x0020)=0x2fe0(12256)外,其它字元的全半形unicode差均為0xfee0(65248)

那麼發現這個規律,可以說我們就已經完成了轉換;對應**實現,由於語言差別,小夥伴根據自己實現方式實現吧;

全形轉半形 半形轉全形(Python)

coding utf 8 def str q2b u string 全形轉半形 全形字符unicode編碼從65281 65374 十六進製制 0xff01 0xff5e 半形字元unicode編碼從33 126 十六進製制 0x21 0x7e 空格比較特殊,全形為 12288 0x3000 半形為...

全形轉半形與半形轉全形

1.全形 指乙個字元占用兩個標準字元位置。漢字字元和規定了全形的英文本元及國標gb2312 80中的圖形符號和特殊字元都是全形字符。一般的系統命令是不用全形字符的,只是在作文書處理時才會使用全形字符。2.半形 指一字元占用乙個標準的字元位置。通常的英文本母 數字鍵 符號鍵都是半形的,半形的顯示內碼都...

全形轉半形

轉半形的函式 dbc case 全形空格為12288,半形空格為32 其他字元半形 33 126 與全形 65281 65374 的對應關係是 均相差65248 param input 任意字串 return 半形字串 public static string todbc string input ...