使用\ n读取字符串中的新行

时间:2014-09-07 13:22:40

标签: java android string

构建字符串时,可以创建如下的换行符:

"This is the first line \n\n And this is the second line";

因此,运行这部分代码时,所有功能都适用于Android模拟器:

TextView newsTextArea = (TextView) view.findViewById(R.id.newsTextView);
newsTextArea.setText("Hello \n\n Whats up");

但是,我已经从我们创建的Web服务下载并解析了JSON,并且我已经将我想要的内容存储在变量中,如下所示:

GlobalSettings globalSettings = new GlobalSettings();
String newsText = globalSettings.getNews();

所以变量newsText等于一个字符串,为了论证,这里可以说是"Hello, this has two lines. \n\n Welcome to the test"

当我像这样运行上述TextView代码时,它会以\n\n作为文字字符输出。

newsTextArea.setText(newsText);

如何才能使变量newsText保持格式化?

3 个答案:

答案 0 :(得分:0)

我是一个很好的猜测..很好,我认为可能有很多原因

1. newsTextArea.setSingleLine(false);
2. newsTextArea.setMinLines(2); or newsTextArea.setMaxLines(50);//any figure
3. String newsText = globalSettings.getNews().replace("\\\n", System.getProperty("line.separator"));
4. String newsText = globalSettings.getNews().toString();

使用这些方法,看看是否适用于ya或两个lol

答案 1 :(得分:0)

  

但是,我已经从我们创建的Web服务下载并解析了JSON ......

您的JSON WS很有可能返回文字序列\n作为其输出。不是您预期的换行符<LF>)。

此时您可能有两个选择:

  • 修复Web服务以返回正确的值
  • 将您的客户端程序更改为&#34; patch&#34;有缺陷的数据,以获得所需的行为。就我自己而言,我不会朝着这个方向努力,因为它很快就会成为维护的噩梦(只要合法的\会在您的数据中弹出)。

也许是时候发布另一个问题了,这次是关于你的JSON网络服务吗?

答案 2 :(得分:0)

很可能无论文本来自何处,反斜杠都会被转义。例如,它可能来自您服务中的硬编码常量,由人类输入表格然后经过验证,或等等。

在解析之前,以原始格式查看您的JSON。 JSON规范说,单个反斜杠后跟n表示换行符。如果它看起来像["Hello, this has two lines. \n\n Welcome to the test"]那么你应该是好的,因为JSON解析器应该正确解释换行符。但是,如果它看起来像这样:["Hello, this has two lines. \\n\\n Welcome to the test"],那么反斜杠字符将被转义,而不是n。