Я хочу сделать заявку о regex. Пользователь вводит регулярное выражение и тестовый текст, и я хочу выделить все в тестовом тексте, который соответствует регулярному выражению. Теперь я сделал что-то вроде этого:Выделите текст в TextView, который может содержать HTML-теги
// txaTestText is an EditText
Editable testText = txaTestText.getText();
// pattern is a java.util.regex.Pattern input by user
Matcher matcher = pattern.matcher(testText);
// txaFindResult is a TextView
txaFindResult.setText(Html.fromHtml(matcher
.replaceAll("<font color=\"red\">$0</font>")));
Проблема заключается в том, что пользователь может ввести некоторую строку, включая теги HTML, в качестве тестового текста. Например:
- регулярное выражение =
o
- тест текст =
Hello<br>world
- ожидаемый результат =
Hello<br>world
(С StackOverflow не поддерживают окраску, я использую полужирный здесь вместо) - реальный результат =
Hello
world
Я попытался использовать Html.escapeHtml
. Однако он добавлен в уровень API 16, в то время как мой минимальный размер составляет 8.
Мой вопрос заключается в том, как решить проблему выше?
Вы можете попробовать заменить '<' на '<' и '>' с '>'. – HamZa
Если регулярное выражение '' 'и тестовый текст' < <', это пойдет не так. – johnchen902
Я говорю о результате, поэтому вы должны заменить это в результате, а не на ввод. – HamZa