最近遇到因為使用者輸入全形數字倒至程式顯示使用者輸入錯誤,因為全形的數字會被當成 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 強轉為數字,減掉編碼差之後再轉回來並取代掉原來的字元。


 

 

 

 

arrow
arrow
    全站熱搜

    taurus770423 發表在 痞客邦 留言(0) 人氣()