Удалите пользовательский тег из строки, затем отформатируйте ее содержимое - PullRequest
0 голосов
/ 26 мая 2020

Мне нужна помощь в синтаксическом анализе, изменении и отображении строки в приложении Android (язык Java, максимальный уровень API 22)

Это пример строки, которую я получаю из API, который содержит только настраиваемый тег:

<BOLD> Something <RED> went wrong </RED> </BOLD> <NEWLINE> Server unreachable </NEWLINE>

Мне нужно удалить все эти настраиваемые теги, а затем отформатировать его содержимое на основе тегов, которые обертывали эту подстроку (так что я, например, экспертирую, чтобы получить "пошел не так" "красным цветом и жирным шрифтом). Я уже пробовал искать похожие проблемы, но не могу прийти к окончательному результату.

Строка (очищенная и отформатированная) затем будет использоваться для установки текста TextView внутри List View

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Использование Regex (регулярные выражения)

Просто передайте свою строку в шаблон Regex, и он удалит для вас все лишние теги.


Kotlin

Это удаляет все теги HTML внутри вашей строки:

val result = yourString.replace(Regex("(<[a-z]*>)|(<.[a-z]*>)"), "")

Java

String result = yourString.replaceAll("(<[a-z]*>)|(<.[a-z]*>)", "");
0 голосов
/ 26 мая 2020

Один из способов сделать это так ...

       String testString="<BOLD> Something <RED> went wrong </RED> </BOLD> <NEWLINE> Server unreachable </NEWLINE>"; 

       testString=testString.replaceAll("<BOLD>","<font> <b>");

        testString=testString.replaceAll("</BOLD>","</b> </font>");

        testString=testString.replaceAll("<RED>","<font color =\"#FF0000\">");  //#FF0000 is hex code for red color

        testString=testString.replaceAll("</RED>","</font> ");

        testString=testString.replaceAll("<NEWLINE>","<br>");

        testString=testString.replaceAll("</NEWLINE>","");

        TextView textView=findViewById(R.id.text);
        textView.setText(Html.fromHtml(testString));

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...