java - stringbuffer 和 "0&"导致截断或转义

标签 java escaping stringbuffer

抱歉,标题不明确,但我什至不知道该怎么调用它,我只是继续解释正在发生的事情。

我正在使用 Stringbuffer 来构建 URL。它看起来像这样:

http://maps.googleapis.com/maps/api/geocode/json?latlng=49.0516736,8.38891840&sensor=false

在将单元测试中的该字符串与该方法的实际结果进行比较时,我遇到了这种行为。

这是我得到的断言错误:

latlng=49.0516736[,8.38891840]&sensor=false> but was:<...on?latlng=49.0516736[,8.3889184]&sensor=false

重点是 sensor=false 之前的字符序列 0]&4]&

如果我删除 & 之前的零,则测试变为绿色。

然后创建的字符串如下所示:

latlng=49.0516736,8.3889184&sensor=false

所以...正如预期的那样。 这不是问题,0 本身被截断并且测试会失败 - 我已经证明我的代码正在执行它应该执行的操作(当我删除零时),但我想知道这里发生了什么。

0& 必须是某种数组访问或某种转义的指示。我不知道。 有人知道是什么导致了这种行为吗?

编辑:

这是我正在使用的代码

StringBuffer s = new StringBuffer( grailsApplication.config.geocodingurl.toString() )
s.append(coordinates.latitude)
s.append(",")
s.append(coordinates.longitude)
s.append("&sensor=false")
return s.toString()

最佳答案

double 转换为String 时存在格式/填充问题。

您正在做的可能是使用 StringBuilder#append(double)最终调用Double#toString() .

请参阅这些方法的 javadoc,并了解如何将 double 值转换为 String。 或者,如果您想控制代码,请使用 NumberFormat或者它的子类。

关于java - stringbuffer 和 "0&"导致截断或转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888572/

相关文章:

Java 程序输出应该是 true ,但它返回 false 为什么?

java - 不能用Eclipse做StringBuilder

java - 如何根据从另一个表中选择的行更改表内容

java - mysql 查询字符串中不支持的字符

javascript - Ruby 相当于 JavaScript 的 encodeURIComponent 产生相同的输出?

java - 如何使用字符串标记器和缓冲区。

Java - 从中​​间开始遍历二维数组

java - 使用 ActiveMQ 取消订阅持久订阅者

html - 转义用户通过文本字段输入的“&”符号?

java - 使用 StringBuffer 替换长字符串中的子字符串