【问题标题】:Android: Format string to html - add new lines <br/> [duplicate]Android:将字符串格式化为 html - 添加新行 <br/> [重复]
【发布时间】:2014-11-28 06:09:40
【问题描述】:

我需要将来自用户的文本格式化为 HTML,但输入是多行的,我必须将该字符串中的所有“输入”替换为 HTML &lt;br /&gt; 标签。

String message = messageEditText.getText().toString();

这是我要格式化的消息。如何相应地格式化字符串?

【问题讨论】:

  • 是的,类似的问题.. thx
  • 感谢我在这个问题上浪费了时间@Sandak

标签: java android html string-formatting


【解决方案1】:

试试

message = message.replace ("\\r\\n", "<br>").replace ("\\n", "<br>");

【讨论】:

  • myString.replace(System.lineSeparator(), "&lt;br&gt;"); 可能会起作用,但这取决于运行应用程序的系统的分隔符,并且用户输入可能与此不同。
  • 更新了我的答案。如果这不起作用,请提供更多信息。
  • 字符串在 Java 中是不可变的。我喜欢写这个。不,我还不是书呆子。这是新趋势。 :D
【解决方案2】:

根据您的操作系统,字符串的每行末尾都会有换行符。这些可以是\n\r\n。随便写:

inputString = inputString.replace("\r\n", "<br />").replace("\n", "<br />");

这样,如果当前操作系统使用\r\n,它们将在第一次替换中被替换,否则如果是\n,它们将不会在第一次替换中找到,但会在第二次替换中被替换。

如果你想写一些的代码,你可以使用如下:

System.getProperty("line.separator")

获取系统的换行符。

【讨论】:

  • +1 - 真的看不出投反对票的原因。
  • 我怀着从投反对票中得到的愤怒写了这篇文章 :) 我还编辑了这个问题,我是第一个指出不变性甚至不同的换行字符串的人。接受的答案只是用“
    ”替换“\r\n”。有趣的日子。有趣的。我下班了。
  • 不是downvoter,而是反斜杠需要反斜杠。
  • 请不要开玩笑了。 @ScaryWombat 看看这个:D stackoverflow.com/a/12053430/1275577
  • 哇,你的昵称是 BackSlash。谢谢你们,你们让我开心。 :D
【解决方案3】:

您可以使用其他回复中已经建议的双重替换,但为了代码简洁,我倾向于使用正则表达式替换:

yourString.replaceAll("\r?\n", "<br/>");

或者,当然是Pattern等价的,如果你需要多次操作:

Pattern endOfLine = Pattern.compile("\r?\n");
endOfLine.matcher(yourString).replaceAll("<br/>");

此外,如果用户的输入是从 Web 界面或远程系统获取的(当然取决于您的用例),请小心使用系统的行分隔符。用户可能使用不同的操作系统...

但是,在所有情况下,请确保在对用户输入中的任何特殊字符进行 HTML 编码之后进行任何 EOL ->
替换。否则,
标签将被编码...

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多