Замена прописных букв на прописные и строчных на строчные

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

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

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

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

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

Tim Biegeleisen 07.04.2019 16:14
0
1
149
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Если я хочу сделать это, я предпочитаю использовать 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);

Спасибо @Mir Milad Hosseiny

BDarshan 07.04.2019 17:19

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

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

Другие вопросы по теме