6 string android escaping replaceall
我对API请求有一个服务器响应,如下所示。
Success! Your request has been sent.\n\nWe’ll inform you once it is done.
Run Code Online (Sandbox Code Playgroud)
我需要在小吃栏中显示此消息。我需要\n在此响应中添加新行。我试图通过使用replaceAll像
String message = (serverResponse.getMessage()).replaceAll("\\n", System.getProperty("line.separator"));
Run Code Online (Sandbox Code Playgroud)
但它显示像这样
如果我添加了string.xml资源文件并开始使用,getString(R.string.message)则会出现相同的消息,\n则说明工作正常。如何从此响应字符串获取新行?
我尝试\n使用<new_line>服务器响应中的其他字符进行更改,并且与可以正常使用replaceAll。问题仅\n在于响应消息。有什么解析的方法\n吗?
Dal*_*kar 11
您需要的是
String message = serverResponse.getMessage().replaceAll("\\\\n", "\n");
为什么需要四个反斜杠?
因为在Java中,反斜杠\是转义字符。如果要在Java字符串中包含单个反斜杠文字,则必须对其进行转义并使用\\
但是,replaceAll方法需要正则表达式,其中反斜杠也是转义字符,因此您也需要转义它。
基本上,在上面的代码中,Java字符串解析器将首先将这四个反斜杠转换为两个\\\\ -> \\,然后正则表达式解析器会将其余两个反斜杠解释为单个反斜杠文字。
我相信您应该能够通过执行以下操作来完成。
// Replace "\n" with "<br>"
String message = (serverResponse.getMessage()).replaceAll("\\n", "<br>");
// Now set SnackBar text using HTML
mSnackBar.setText(HTML.fromHTML(message))
Run Code Online (Sandbox Code Playgroud)
通过使用HTML.fromtHTML(String)您应该能够保留任何格式,例如中断、ASCII HTML 字符(项目符号、星号等)、着色和/或粗体/斜体!我经常使用它来格式化已显示给用户的 TextViews 中的文本。不明白为什么它不能与 SnackBars 一起使用!
| 归档时间: |
|
| 查看次数: |
6155 次 |
| 最近记录: |