我需要格式化从用户到HTML的文本,但输入是多行的,我必须替换所有&#34;输入&#34;从该字符串到HTML <br />
标记。
String message = messageEditText.getText().toString();
这是我要格式化的信息。如何相应地格式化字符串?
答案 0 :(得分:5)
试
message = message.replace ("\\r\\n", "<br>").replace ("\\n", "<br>");
答案 1 :(得分:1)
根据您的操作系统,字符串将在每行的末尾添加换行符。这些可以是\n
或\r\n
。只需写下:
inputString = inputString.replace("\r\n", "<br />").replace("\n", "<br />");
这样,如果当前操作系统使用\r\n
,那么这些将在第一次替换中被替换,否则如果它是\n
,则在第一次替换时将找不到它们,但是将在第二个。
如果您想编写一些酷代码,可以使用以下代码:
System.getProperty("line.separator")
获取系统的换行符。
答案 2 :(得分:1)
您可以使用其他响应中已建议的双重替换,但为了简洁代码,我倾向于更换正则表达式:
yourString.replaceAll("\r?\n", "<br/>");
或者,当然是Pattern等效,如果你需要多次进行操作:
Pattern endOfLine = Pattern.compile("\r?\n");
endOfLine.matcher(yourString).replaceAll("<br/>");
另外,如果用户的输入是从Web界面或远程系统获取的(当然,这取决于您的用例),请小心使用System的行分隔符。用户可以使用其他操作系统......
但是,在所有情况下,请确保您执行任何EOL - &gt; &LT峰; br /&GT;替换,在用户输入中使用HTML编码任何特殊字符之后。否则,&lt; br&gt;标签将被编码...