2015-07-22 49 views
-1

我試圖在字符串上進行大寫和規範化Unicode字符,但沒有一種方法按預期工作。 下面是相關的代碼:Android,字符串轉換不能按預期工作

String in = input.getText().toString(); 
      in.toUpperCase(); 
      System.out.println(in); 
      in= Normalizer.normalize(in,Normalizer.Form.NFC); 
      System.out.println(in); 
      stripOut.setText(in); 

首先是 「toUpperCase()」 方法不能什麼都不做。 其次,「Normalize」方法不會刪除重音符號,而會將其移至下一個字符。 輸入輸出示例:

Input: φάε ήλιο δεν ξέρεις 
UpperCase.out﹕ φάε ήλιο δεν ξέρεις 
Normalize.out φάε ήλιο δεν ξέρεις 

Input: Βέλγιο φορά δρόμους γιατί 
UpperCase.out: Βέλγιο φορά δρόμους γιατί 
Normalize.out: Βέλγιο φορά δρόμους γιατί 

任何想法?

+2

try in = in.toUpperCase(); –

+0

try in = in.toUpperCase(Locale.getDefault()); –

+0

這很簡單?有用!謝謝,很多 – user2057220

回答

1

首先做了 「toUpperCase()」 方法不能什麼都不做。

Java字符串是不可變的,您不捕獲該方法返回的新大寫字符串。

其次,「Normalize」方法不會刪除重音符號,而會將其移至下一個字符。

規範化不會刪除重音符號。它只是確保unicode字符以一致的方式表示。

要刪除重音符號,請將歸一化爲已分解的NFD表格並刪除非字母字符。請參閱Is there a way to get rid of accents and convert a whole string to regular letters?

0

字符串在java中是不可變的。你不能通過調用

「in.toUpperCase();」

如果你想做到這一點,您可以通過

in= in.toUpperCase();