平凡也就兩個字: 懶和惰;
成功也就兩個字: 苦和勤;
優秀也就兩個字: 你和我。
跟著我從0學習JAVA、spring全家桶和linux運維等知識,帶你從懵懂少年走向人生巔峰,迎娶白富美!
每一篇文章都是心得總結,跟我學習你就是大牛!
在計算機屏幕上,一個漢字要佔兩個英文字符的位置,人們把一個英文字符所佔的位置稱為」半角」,相對地把一個漢字所佔的位置稱為」全形」。
2 什麼是半角和全形?2.1 全形指一個字符佔用兩個標準字符位置。
全形指一個字符佔用兩個標準字符位置的狀態。漢字字符和規定了全形的英文字符及國標GB2312-80中的圖形符號和特殊字符都是全形字符。全形狀態下字母、數字、符號和漢字都會佔兩個字節的位置,也就是一個漢字那麼寬。
2.2 半角指一字符佔用一個標準的字符位置。
是指英文ASCII碼中的各種符號。半角的顯示內碼都是一個字節。半角狀態下字母、數字和符號一般會佔一個字節,也就是半個漢字的位置;漢字佔2個字節,漢漢字屬於全形。
3 全形和半角字符對應表 1)半角字符(除空格外)是從33(0x21)開始到126(0x7E)結束;
2)與半角字符對應的全形字符是從65281(unicode編碼的0xFF01)開始到65374(unicode編碼的0xFF3E)結束;
3)其中半角的空格是32(0x20).對應的全形空格是12288(unicode編碼的0x3000);
4)半角和全形的關係很明顯,除空格外的字符偏移量都是是65248(65281-33 = 65248)
全形和半角字符對應表如下:
全形和半角字符對應表ASCII全形字符Unicode半角字符0x20" "空格U+3000" "空格0x21!U+ff01!0x22"U+ff02"0x23#U+ff03#0x24$U+ff04$0x25%U+ff05%0x26&U+ff06&0x27'U+ff07'0x28(U+ff08(0x29)U+ff09)0x2a*U+ff0a*0x2b+U+ff0b+0x2c,U+ff0c,0x2d-U+ff0d-0x2e.U+ff0e.0x2f/U+ff0f/0x300U+ff1000x311U+ff1110x322U+ff1220x333U+ff1330x344U+ff1440x355U+ff1550x366U+ff1660x377U+ff1770x388U+ff1880x399U+ff1990x3a:U+ff1a:0x3b;U+ff1b;0x3c<U+ff1c<0x3d=U+ff1d=0x3e>U+ff1e>0x3f?U+ff1f?0x40@U+ff20@0x41AU+ff21A0x42BU+ff22B0x43CU+ff23C0x44DU+ff24D0x45EU+ff25E0x46FU+ff26F0x47GU+ff27G0x48HU+ff28H0x49IU+ff29I0x4aJU+ff2aJ0x4bKU+ff2bK0x4cLU+ff2cL0x4dMU+ff2dM0x4eNU+ff2eN0x4fOU+ff2fO0x50PU+ff30P0x51QU+ff31Q0x52RU+ff32R0x53SU+ff33S0x54TU+ff34T0x55UU+ff35U0x56VU+ff36V0x57WU+ff37W0x58XU+ff38X0x59YU+ff39Y0x5aZU+ff3aZ0x5b[U+ff3b[0x5c\U+ff3c\0x5d]U+ff3d]0x5e^U+ff3e^0x5f_U+ff3f_0x60`U+ff40`0x61aU+ff41a0x62bU+ff42b0x63cU+ff43c0x64dU+ff44d0x65eU+ff45e0x66fU+ff46f0x67gU+ff47g0x68hU+ff48h0x69iU+ff49i0x6ajU+ff4aj0x6bkU+ff4bk0x6clU+ff4cl0x6dmU+ff4dm0x6enU+ff4en0x6foU+ff4fo0x70pU+ff50p0x71qU+ff51q0x72rU+ff52r0x73sU+ff53s0x74tU+ff54t0x75uU+ff55u0x76vU+ff56v0x77wU+ff57w0x78xU+ff58x0x79yU+ff59y0x7azU+ff5az0x7b{U+ff5b{0x7c|U+ff5c|0x7d}U+ff5d}0x7e~U+ff5e~4 半角和全形字符轉換4.1 列印出java中所有Unicode編碼的字符private static void printAllCharacter() { for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) { System.out.println(i + " " + (char) i); } }4.2 java轉換半角--->全形半角轉全形java實現:
public static String toSbc(String input) { if (StringUtils.isBlank(input)) { return ""; } char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 32) { c[i] = (char) 12288; continue; } if (c[i] < 127) { c[i] = (char) (c[i] + 65248); } } return new String(c); }
4.3 java轉換全形--->半角全形轉半角java實現:
public static String toDbc(String input) { if (StringUtils.isBlank(input)) { return ""; } char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 12288) { c[i] = (char) 32; continue; } if (c[i] > 65280 && c[i] < 65375) { c[i] = (char) (c[i] - 65248); } } return new String(c); }
5 測試5.1 main測試方法public static void main(String[] args) { String str = "半角符號示例:,!~ 全形符號示例:,!~"; System.out.println("半角--->全形轉換前:" + str); String sbcResult = toSbc(str); System.out.println("半角--->全形轉換後:" + sbcResult);
System.out.println("全形--->半角轉換前:" + str); String dbcResult = toDbc(str); System.out.println("全形--->半角轉換後:" + dbcResult); }
5.2 測試結果6 全部代碼import org.apache.commons.lang3.StringUtils;
public class Main {
public static void main(String[] args) { String str = "半角符號示例:,!~ 全形符號示例:,!~"; System.out.println("半角--->全形轉換前:" + str); String sbcResult = toSbc(str); System.out.println("半角--->全形轉換後:" + sbcResult);
System.out.println("全形--->半角轉換前:" + str); String dbcResult = toDbc(str); System.out.println("全形--->半角轉換後:" + dbcResult); }
public static String toSbc(String input) { if (StringUtils.isBlank(input)) { return ""; } char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 32) { c[i] = (char) 12288; continue; } if (c[i] < 127) { c[i] = (char) (c[i] + 65248); } } return new String(c); }
public static String toDbc(String input) { if (StringUtils.isBlank(input)) { return ""; } char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 12288) { c[i] = (char) 32; continue; } if (c[i] > 65280 && c[i] < 65375) { c[i] = (char) (c[i] - 65248); } } return new String(c); }
private static void printAllCharacter() { for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) { System.out.println(i + " " + (char) i); } }}關注微信公眾號,免費獲取java及其相關視頻教程~