【问题标题】:String method replaceAll(String s,String replacement) [duplicate]字符串方法replaceAll(字符串s,字符串替换)[重复]
【发布时间】:2023-09-21 20:55:02
【问题描述】:

我的朋友正试图完成他的计算机科学项目,但有一件事阻止他这样做:String 方法 replaceAll 似乎无法正常工作。他想删除所有新行或回车(\n 或 \r)的实例,并用几个空格替换它们。

for(int c = 0; c<bible.size(); c++){
    bible.get(c).getForeign().replaceAll("\\n","          ");
    bible.get(c).getForeign().replaceAll("\\r","          ");
}

代码

bible.get(c).getForeign()

返回从文本文件中读取的不同语言的字符串。这段代码有什么问题吗?它似乎没有用空格替换新行。 我检查了 String 类的 JavaDocumentation 和

replaceAll(String str, String replacement);

他们说反斜杠和美元符号可能会使返回的字符串有点不同。还有另一种方法可以做到这一点吗? 提前致谢。

【问题讨论】:

  • 尝试使用'\n'而不是“\\n”
  • 看看replaceAll返回什么。
  • 使用"\n",而不是"\\n"\n 表示新线路。两个反斜杠代表“反斜杠”,因此“n”成为普通字符。

标签: java string


【解决方案1】:

String 对象是不可变的。结果不存储在原始对象中。 replaceAll() 返回一个 String 对象,您可以将其存储回来,如下所示:

bible.get(c).setForeign(bible.get(c).getForeign().replaceAll("\\n","          "));

【讨论】:

  • 如何在问题结束后发布答案!? :O
  • 这真是奇怪的巧合!!看到帖子我就开始写答案了。当我点击“发布答案”时,它已关闭但答案已提交..这种现象非常罕见! :)
  • @luk2302 有一个宽限期,关闭后仍然可以发布。 It is actually quite long.
  • @Tunaki 谢谢.. 我不知道有任何宽限期!