Suppose I have sentence in String X. How can I split each word in sentence and add a span tag for each word with class word and if the word matches with String y add class word selected?
Both X and y Are dynamic
String X = "The community is here to help you with specific coding, algorithm, or language problems." String Y = "community, here"
I create a function and split into array , but i am not able to append to string builder
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();
}
My output should look like this
<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>
Advertisement
Answer
I’d split x by space, stream it, wrap every word with its span, and then join it back. For the distinction between selected and non selected words, I’d split y, store the words in a Set (not strictly required, but should improve performance, especially on large inputs), and use that to check for the required class:
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>"));
}