2015-07-22 7 views
-1

Я пытаюсь заглавные и нормализовать символы Unicode на String, но ни один из методов не работает должным образом. Вот соответствующий код: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()" метод не сделает ничего. Второй способ «Нормализовать» не удаляет акценты, а переводит их на следующий символ. ввода-Output примеры:

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 неизменяемы, и вы не захватываете новую строку верхнего регистра, возвращаемую методом.

Во-вторых, метод «Нормализовать» не удаляет акценты, а перемещает их на следующий символ.

Нормализация не снимает акценты. Это просто гарантирует, что символы Юникода представлены последовательно.

Чтобы удалить акценты, нормализуйте разложенную форму 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(); 
Смежные вопросы