gpt4 book ai didi

java - 如何添加 html 标签但仍保持空格不变?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:37 24 4
gpt4 key购买 nike

我正在处理来自 http://www.glassdoor.com/Interview/Indeed-Software-Engineer-Intern-Interview-Questions-EI_IE100561.0,6_KO7,31.htm 的面试问题

我现在做的题是“第二题是在一个字符串中搜索一个特定的词,并在这个词的每一个出现处加上“”“<\b>”。

这是我的代码:

public class AddBsAround {
public static void main(String[] args) {
String testCase = "Don't you love it when you install all software and all programs";
System.out.println(addBs(testCase, "all"));
}
public static String addBs(String sentence, String word) {
String result = "";
String[] words = sentence.trim().split("\\s+");
for(String wordInSentence: words) {
if(wordInSentence.equals(word)) {
result += "<b>" +word + "</b> ";
} else {
result += wordInSentence + " ";
}
}
return result;
}
}

代码基本上产生了正确的输出;也就是说,当在测试用例中传递时,它会产生

Don't you love it when you install <b>all</b> software and <b>all</b> programs

,避免了原作者的错误,在“install”中搜索“all”,他的代码会产生“install”。

但是空格会是个问题吗?什么时候传入

"Don't   you love    it "

,我的代码会生成“你不喜欢它”,或者基本上是单词之间只有一个空格的句子。你们认为这是一个问题吗?我有点这样做,因为客户可能不希望这种方法改变空间。会有解决方法吗?我觉得我需要使用正则表达式来分隔单词。

最佳答案

不是在 \\s+ 上拆分,而是在 \\s 上拆分——这样,它会在每个单独的空间而不是每组空间上拆分,并且当您将它们放回原处,保留了空间量。不同之处在于 + 告诉正则表达式在一个或多个空格上拆分,但如果没有它,它就完全是一个。

除此之外,我还建议使用 StringBuilder 来连接字符串,因为它对于很长的字符串更有效,而且您想成为最好的,对吗?

这只是一个字符更改,但为了完整起见,这是您的新方法:

public static String addBs(String sentence, String word) { 
StringBuilder result = new StringBuilder();
String[] words = sentence.trim().split("\\s");
for(String wordInSentence: words) {
if(wordInSentence.equals(word)) {
result.append("<b>").append(word).append("</b> ");
} else {
result.append(wordInSentence).append(" ");
}
}
return result.toString();
}
}

使用这段代码的结果是这样的:

Don't   you love    it when you install <b>all</b> software and <b>all</b> programs

关于java - 如何添加 html 标签但仍保持空格不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28115386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com