Освоение расширяемых строк в Android: обработка нескольких вхождений одного и того же текста

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

Метод 1: использование метода setSpan()
Метод setSpan() позволяет нам применять различные стили или модификации к определенным частям текста. Чтобы обрабатывать несколько вхождений одной и той же строки, мы можем перебирать текст и выборочно применять интервалы. Вот пример:

SpannableString spannableString = new SpannableString("Hello world, hello universe, hello everyone");
String target = "hello";
int startIndex = 0;
while (startIndex != -1) {
    startIndex = spannableString.toString().toLowerCase().indexOf(target, startIndex);
    if (startIndex != -1) {
        int endIndex = startIndex + target.length();
        spannableString.setSpan(new StyleSpan(Typeface.BOLD), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        startIndex = endIndex;
    }
}
textView.setText(spannableString);

Метод 2: использование регулярных выражений и Matcher
Другой подход заключается в использовании регулярных выражений (регулярных выражений) вместе с классом Matcher для поиска и стилизации нескольких вхождений строки. Вот пример:

SpannableString spannableString = new SpannableString("Hello world, hello universe, hello everyone");
String target = "hello";
Pattern pattern = Pattern.compile(target, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(spannableString.toString());
while (matcher.find()) {
    int startIndex = matcher.start();
    int endIndex = matcher.end();
    spannableString.setSpan(new ForegroundColorSpan(Color.RED), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
textView.setText(spannableString);
String text = "Hello <b>world</b>, hello <b>universe</b>, hello <b>everyone</b>";
CharSequence styledText = Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY);
textView.setText(styledText);

В этой статье мы обсудили несколько методов обработки нескольких вхождений одной и той же строки с помощью SpannableString в Android. Мы изучили метод setSpan(), регулярное выражение с Matcher и Html.fromHtml(). Используя эти методы, вы можете легко стилизовать и изменять текст в своих приложениях Android. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует вашим потребностям.