【问题标题】:Android: Split string by "\n" as string not as new line [duplicate]Android:将字符串按“\ n”拆分为字符串而不是换行[重复]
【发布时间】:2018-03-13 09:06:02
【问题描述】:

我有一个来自服务器的以下字符串

String text = "- 30016264\n- 30014837\n- 30014836\n";

我以前是这样拆分的

String[] list = text.split("\n");

我得到这样的列表,长度为 1

list[0] = "- 30016264\n- 30014837\n- 30014836\n";

而当我以前是这样分割的时候

String[] list = text.split("\\n");

我得到了同样的列表,长度为 1

list[0] = "- 30016264\n- 30014837\n- 30014836\n";

如何编写代码来根据“\n”而不是下一行来拆分字符串?

注意:这个字符串来自服务器,因为它写在这里,当我使用这个服务器字符串作为TextView 值时,它将显示在一行中。

【问题讨论】:

  • String list = text.split("\n");。不可能的!这甚至没有编译。
  • @greenapps 更正了上面的代码!!!

标签: java android string split


【解决方案1】:

如果您的输入来自服务器并采用以下格式:

- 30016264\n- 30014837\n- 30014836\n

然后,在 Java 中,它应该像这样用双反斜杠表示:

- 30016264\\n- 30014837\\n- 30014836\\n

因为反斜杠在 Java 中是一个特殊字符,所以必须用另一个反斜杠对其进行转义。

然后要使用\\n 拆分,您需要使用\\\\n,为什么要使用 4 个反斜杠,因为就像我之前所说的反斜杠是特殊字符,因为您必须用另一个反斜杠转义每个反斜杠,因为您需要 4 而不是 2或 1.

您的解决方案应如下所示:

String text = "- 30016264\\n- 30014837\\n- 30014836\\n";
String[] split = text.split("\\\\n");

输出

- 30016264 
- 30014837
- 30014836

【讨论】:

  • 我知道四个/的原因吗?
  • 它有效。谢谢!
  • @VishvaDave 每个输入包含两个反斜杠,您必须用反斜杠转义每个反斜杠,因为有 4 个反斜杠
  • @YCF_L 好的,谢谢!
  • 是的,您对两种情况下的打印内容都是正确的。与第一个漂亮的线条。第二个废话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多