#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>")));