Замена верхнего регистра на верхний регистр и нижнего регистра на нижний регистр

#android #android-layout

#Android #android-макет

Вопрос:

Я выделяю текст в textviews после поиска и заменяю этим кодом..

  txtV.setText(Html.fromHtml((text.replaceAll("(?i)" 
      searchText,"<font color='#53f721'>"   searchText   "</font>")));
  

Но все символы верхнего регистра заменяются строчными.
Я хочу, чтобы символ верхнего регистра был заменен на верхний регистр, а символ нижнего регистра — на нижний регистр.

Заранее спасибо.

Комментарии:

1. Пожалуйста, добавьте четкое описание проблемы к вашему вопросу. Кроме того, я сомневаюсь в вашем описании текущего поведения. Возможно, также добавьте некоторые образцы данных.

Ответ №1:

На самом деле вы заменяете исходный текст на searchText , и с помощью (?i) функции replace работает без учета регистра.

Если я хочу это сделать, я предпочитаю использовать SpannableString, как показано ниже:

 String originalText = "Your original text";
Spannable wordToSpan = new SpannableString(originalText);
originalText = originalText.toLowerCase();
searchText = searchText.toLowerCase();
int length = searchText.length();
int index = originalText.indexOf(searchText);
while (index >= 0) {
    wordToSpan.setSpan(new ForegroundColorSpan(Color.BLUE), index, index   length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    index = originalText.toLowerCase().indexOf(searchText, index   length);
}
txtV.setText(wordToSpan);
  

Комментарии:

1. Спасибо @Mir Milad Hosseiny

Ответ №2:

Вы можете использовать возможности регулярных выражений следующим образом:

 txtV.setText(Html.fromHtml((text.replaceAll("(?i)" 
      searchText,"<font color='#53f721'>$0</font>")));