Как добавить в String Builder в Java?

Предположим, у меня есть предложение в строке X. Как я могу разделить каждое слово в предложении и добавить тег span для каждого слова с классом word, а если слово совпадает со строкой y, добавить класс word selected?

Оба X и y являются динамическими

String X = "The community is here to help you with specific coding, algorithm, or language problems."
String Y = "community, here"

Я создаю функцию и разбиваю на массив, но не могу добавить в построитель строк

    private String setPType(String X , String Y){
       String[] elements = Y.split(",");
       String[] newElement = X.split(",");
        StringBuilder sb = new StringBuilder();
        sb.append("<p id=\"view\">");
        sb.append("</p>");
        return sb.toString();
    }

Мой вывод должен выглядеть так

<p id = "view"> 
<span class = "word">The</span>
<span class = "word selected">community</span> 
<span class = "word">is</span> 
<span class = "word selected">here</span> 
<span class = "word">to</span>
<span class = "word ">help</span>
</p>

«но я не могу добавить к построителю строк» ​​Я ясно вижу, что ваш код добавляет строки к StringBuilder. Какова ваша настоящая проблема? Разве это не дает желаемого результата? Выдает ошибку?

Aplet123 12.12.2020 21:35

Что, я думаю, вы можете добавить, но хотите ожидаемый результат?

Ayush Kangar 12.12.2020 21:38

В какой момент вы загружаете element и newElements в свой StringBuilder?

sunrise 12.12.2020 21:43

Что ж, вы получите желаемый результат только в том случае, если приложите усилия для циклического прохождения X-расщеплений и сопоставления их с набором Y-расщеплений.

isopropylcyanide 12.12.2020 21:46
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
98
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Что здесь выглядит неправильно, так это то, что вы не добавляете ожидаемые значения, вместо этого ваша последняя строка: <p id = "view"></p>. Попробуйте добавить его, например:

sb.append("<p id=\"view\">");
    sb.append("abc");
    sb.append("</p>");

Это: не добавляет новые строки, не принимает во внимание строки X и Y и, по сути, опускает весь код, который фактически решит вопрос OP.

Aplet123 12.12.2020 21:42

Точно @Aplet123 ... Попробуйте поставить и это, но не проголосовали LOL

Andre Moraes 12.12.2020 21:43
Ответ принят как подходящий

Я бы разделил x по пробелам, транслировал их, обернул каждое слово его диапазоном, а затем присоединил его обратно. Для различия между выбранными и невыбранными словами я бы разделил y, сохранил слова в Set (строго не требуется, но должен повысить производительность, особенно при больших входных данных) и использовать это для проверки требуемого класса:

private static String setPType(String x , String y) {
    Set<String> classifier = new HashSet<>(Arrays.asList(y.split(", ")));

    return Arrays.stream(x.split(" "))
            .map(w -> {
                String cls = classifier.contains(w) ? "word selected" : "word";
                return String.format("<span class=\"%s\">%s</span>", cls, w);
            })
            .collect(Collectors.joining("\n", "<p id=\"view\">\n", "\n</p>"));
}

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