【问题标题】:Characters Being Added To List<String>添加到 List<String> 的字符
【发布时间】:2012-09-14 23:55:39
【问题描述】:

我有一个名为 dbData 的列表和两个名为 infoSB 和 historySB 的 StringBuilder。我已经调试了我的项目,两个 StringBuilders 拥有它们应该拥有的所有数据,但由于某种原因,它也向数据中添加了一些随机字符。我为添加数据所做的只是下面的代码:

dbData.add(infoSB.toString());
dbData.add(historySB.toString());

要添加的字符是 [ ] 和 ,

以前有没有人遇到过这种情况并知道如何防止它发生这种情况?

更新:这是我获取数据并将其分配给 StringBuilder 的方式。

JSONObject json_data = jArray.getJSONObject(i);
double altitudeData = json_data.getDouble("altitude");
double altitudeInFeet = altitudeData * 3.281;
historySB.append("Altitude: " + df.format(altitudeInFeet) + "ft\n");

【问题讨论】:

  • 请给我们看数据。
  • {"longitude":"-86.642","latitude":"34.72533333333333","speed":"0.51444444","heading":"281","altitude":"190.8048"}
  • 这些角色最初是怎么出现的?我会更正生成这些的源,而不是在接收端以非标准方式处理它们。
  • 我已更改我的问题以匹配我最近在调试我的应用程序时发现的问题。

标签: java android string list stringbuilder


【解决方案1】:

-首先检查您的data source,它们是否带有您收到的某种奇怪字符。

- 我希望那些 StringBuilder 持有的不是 JSON,我怀疑这是因为您在 StringBuilders 中获得了 [],,所以如果确实如此,您需要首先解析它们,然后需要检索您想要的特定数据....

-您可以使用trim() 方法避免任何悬空的空格

例如:

dbData.add(infoSB.toString().trim());
dbData.add(historySB.toString().trim());

////////////////////////////////////////////////////////////////////////////////////////

DecimalFormat df = new DecimalFormat("##.###");
String altitudeData = json_data.getString("altitude");
double altitudeInFeet = Double.parseDouble(altitudeData) * 3.281;
historySB.append("Altitude: " + df.format(altitudeInFeet) + "ft\n");

【讨论】:

  • 当我调试我的代码时,我检查了 infoSB 和 historySB 中的数据,然后再将它们添加到 dbData 中,并且它不包含奇数字符。原始来源是 JSONObject,但当我解析数据时,它会将数据转换为双精度,然后将它们添加到 StringBuilder。因此它不再是 JSONObject 并且字符不存在。在我的问题中显示的行之前,这些字符不存在。
  • @RandomlyKnighted 好的,试试这种方式......不要把你的数据变成双打......只需解析它并以字符串本身的形式获取数据......根据你的要求一个特定的字段为双精度类型,然后转换它。
  • IDE 似乎不喜欢那样。我将用代码更新问题,向您展示我所拥有的。
【解决方案2】:

这些字符是在字符串的开头和结尾吗,中间的某个地方是逗号吗?这就是ListtoString 方法的目的。

如果你有一个包含三个元素的列表

  1. “汽车”
  2. “货车”
  3. “自行车”

然后列表将创建以下字符串[car, van, bike][] 表示列表的开头和结尾,逗号表示元素之间的边界。

如果您只想连接字符串,请使用+ 运算符或StringBuilder / StringBuffer

例如。

String data = infoSB + historySB;

【讨论】:

  • 是的,但是dbData呢?
  • 这就是我想说的。当您将其转换为字符串时,List 类会产生额外的字符。
  • 这是在 Java 7 API 中的某个地方吗?我一直在寻找它以阅读它,但还没有找到它。
  • toString 方法通常没有文档记录,但[x0, x1, ..., xn-1] 是大多数语言中打印出列表的标准方法。
  • 抱歉误读了您的原帖。我能够通过遍历列表并将其添加到我的适配器来解决问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多