Получить расположение замещенной строки формата подстроки в Android

Я не совсем уверен, как это сформулировать, поэтому название немного странное. Я хочу покрасить и изменить размер 2 замещенных подстрок в строке в формате "%1$d/10 %2$s". Например, скажем, первый аргумент - "1", а второй - "Мусор", а последняя строка будет "1/10 Мусор". Я хочу покрасить "1" в красный и задать стиль жирным шрифтом, а "красный мусор" - красным, но оставить "/ 10" без изменений. Я знаю, что могу сделать это с помощью Spannables, но проблема в том, что я не вижу способа получить начальную и конечную точки различных подстрок. Я знаю, что могу просто найти первый символ "/" и предположить, что символы перед ним являются заменой первого формата, а затем искать первый непробельный символ после "10" и знать, что это замена второго формата, но это кажется немного грязным. Конечно, должен быть какой-то способ запросить строку для позиций символов, которые были заменены для каждого параметра формата?

1 ответ

Не то, что я знаю из.

Все методы форматирования в Java возвращают либо строку, либо форматер (в зависимости от того, что вы используете).

Это выглядит "грязно", но не так сильно, как вы сказали, что вы, вероятно, будете использовать вариант indexOf(String str, int fromIndex) дважды, чтобы получить индексы, а затем раскрасить с помощью spannable. Так что, вероятно, это будет около 4-6 строк соответствующего кода.

Другой способ вручную найти индексы - использовать цикл for, чтобы найти '/' а затем ' ', Если ваша строка всегда имеет этот формат, он будет работать.

Также есть регулярные выражения, но это немного излишне!

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