最近遇到因為使用者輸入全形數字倒至程式顯示使用者輸入錯誤,因為全形的數字會被當成 String 來處理。
為了解決這個問題,所以寫了下面程式把字串內的全形字都轉成半形。
不過目前還有一些字元成轉換之後會失真,這還得想辨法解決。
說明:
首先要先知道全形字的編碼範圍是多少,在wiki有些訊息可以查詢。
現在知道全形字的範圍是:
十進位→12288、65281~65374
十六進位→Ux3000、UxFF01~UxFF5E
這個範圍是全部全形字,如果有需要特定的字元可以到WIKI上查表。
可選擇十或十六進位來處理
程式碼就下面簡單的幾行~
public static String demo(String str){ for(char c:str.toCharArray()){ str = str.replaceAll(" ", " "); if((int)c >= 65281 && (int)c <= 65374){ str = str.replace(c, (char)(((int)c)-65248)); } } return str; }
說明:
3.針對全形空白處理,因為它的全形及半形ASCII編碼差與其它的不同,且只有它一個,所以直接用取代的方法將全形取代成半形。
5.因為全形及半形的ASCII編碼差65248,所以把字元(c)提出之後用 int 強轉為數字,減掉編碼差之後再轉回來並取代掉原來的字元。
全站熱搜