2014-01-31 1 views
0

나는 다음과 같은 문자열 리소스가 있습니다안드로이드 및 String.format 던지기 (자), UnknownFormatConversionException

<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> 

이하여 활동에 사용되는 :

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'' 

%f 대신 %s을 사용해 보았지만 아무런 차이가 없었습니다.

답변

0

내 수정 대신 %26의 앰퍼샌드 탈출 &amp;를 사용하는 것이 었습니다.

0

% f 형식 지정자가 아닌 % 26을 URL의 일부로 사용하는 것이 문제입니다. % 26은 (는) 올바른 형식 사양이 아니므로 오류가 발생합니다. 형식 루틴에 실제로 문자 % 문자가 필요하다는 것을 알릴 필요가 있습니다. %%를 사용해보십시오.

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

+0

쿼리 문자열에서 앰퍼샌드를 이스케이프 처리해야합니다. 어떻게해야합니까? 26 %라고 생각했지만 분명히 그렇지 않습니까? – codedog

+0

내가 잘못 알아 냈어. 그것은 '&'로 이스케이프되었다. 이제는 정상적으로 작동합니다. – codedog

+0

% 26은 대부분의 상황에서 작동합니다. 문자열을 형식 지정자로 % 문자를 해석하는 것에 대한 입력으로 사용할 때가 아닙니다. 당신이 문제를 피한 것 같네요. – user3109924