public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String s = "this is just just a text text";
    System.out.println(s.replaceAll(" just ", " <b>just</b> "));
}


输出应该是这仅仅是文本文本,但是我得到的仅仅是文本文本。有人可以帮助我理解这一点吗?
提前致谢!

最佳答案

做类似的事情:

System.out.println(s.replaceAll("just", "<b>just</b>"));


如果您只想替换"just"而不是任何以"just"开头的单词,则此命令可能不合适。
否则输入如下:

String s = "this is justice just a text text";


将产生:


  这只是冰而已


由于replaceAll()使用正则表达式,因此可以通过期望" just""just "来处理空格。

通过这样做:

System.out.println(s.replaceAll("\\sjust|just\\s", "<b>just</b>"));


您将获得接近目标的结果,但由于正则表达式考虑了前后的空白并保持替换的一致性,因此您在输出中仍会遇到空白问题(过多或不足),您应保持输入中的空白。

一个更好的解决方案是调用两次replaceAll()

System.out.println(s.replaceAll(" just ", " <b>just</b> ").replaceAll(" just ", " <b>just</b> "));


例如,使用此输入:

String s = "this is a just just just adjusted justice test";


第一个replaceAll()每两个替换一次链接的“ just”:

this is a <b>just</b> just <b>just</b> adjusted justice test



  这只是一个刚刚调整的司法考试


在第一个replaceAll()返回的String上调用的第二个replaceAll()替换其余的" just "

this is a <b>just</b> <b>just</b> <b>just</b> adjusted justice test



  这只是一个刚刚调整的司法考试


它给出了准确的结果,但这不是最有效的方法,因为它解析了两倍的String。

一个更有效的解决方案可以使用Pattern并定义一个不包含空格的组。这样,替换只能在just字符串上执行。

关于java - Java替换功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44181478/

10-10 21:46