Android,字符串转换没有按预期工作

时间:2015-07-22 06:11:19

标签: java android string

我试图在String上大写和规范化unicode字符,但没有一个方法按预期工作。 以下是相关代码:

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()"方法什么都不做。 第二个"标准化"方法不会删除重音但会将它们移动到下一个字符。 输入输出示例:

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  

首先,“toUpperCase()”方法不会做任何事情。

Java字符串是不可变的,您没有捕获该方法返回的新的大写字符串。

  

其次,“Normalize”方法不会删除重音,而是将它们移动到下一个字符。

标准化不会删除重音。它只是确保以一致的方式表示unicode字符。

要删除重音符号,请对已分解的NFD表单进行标准化并删除非字母字符。见Is there a way to get rid of accents and convert a whole string to regular letters?

答案 1 :(得分:0)

String在java中是不可变的。你不能改变它"在"调用值

  

" in.toUpperCase();"

如果你想这样做,你可以通过

来做
 in= in.toUpperCase();