【问题标题】:Android String.format throwing UnknownFormatConversionExceptionAndroid String.format 抛出 UnknownFormatConversionException
【发布时间】:2014-01-31 02:01:45
【问题描述】:

我有以下字符串资源:

<string formatted="false" name="residential_search_url">https://api.trademe.co.nz/v1/Search/Property/Residential.json?latitude_min=%f%26latitude_max=%f%26longitude_min=%f%26longitude_max=%f</string>

这在 Activity 中被使用:

String residentialUrl = task.getSearchUrl(_map.getProjection().getVisibleRegion().latLngBounds,getString(R.string.residential_search_url));

并且方法定义为:

public String getSearchUrl(LatLngBounds bounds, String baseUrl){
        return String.format(baseUrl,
                bounds.southwest.latitude,
                bounds.northeast.latitude,
                bounds.southwest.longitude,
                bounds.northeast.longitude);
    }

我不断得到:

java.util.UnknownFormatConversionException: Conversion = l''

我也尝试使用%s 代替%f,但没有任何区别。

【问题讨论】:

    标签: java android android-resources


    【解决方案1】:

    问题在于您使用 %26 作为 URL 的一部分,而不是 %f 格式说明符。 %26 不是有效的格式规范,因此您会收到错误消息。您需要告诉格式例程,您实际上确实需要一个文字 % 字符。为此尝试 %%。

    http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

    【讨论】:

    • 我需要转义查询字符串中的与号。我怎么做?我以为是 %26 但显然不是?
    • 我弄错了 - 结果它被转义为&amp;amp;。现在它工作得很好。
    • %26 在大多数情况下都可以使用,只是当您将字符串用作将 % 字符解释为格式说明符的内容时,则无法使用。听起来你回避了这个问题。
    • 相当混乱,尤其是来自 .NET 世界!
    【解决方案2】:

    我的解决方法是使用&amp;amp; 来转义与号,而不是%26

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多