2014-11-21 3 views
-2

서버에서 html을 약간 선택하는 webview가 있습니다. Webview에는 % 토큰으로 전달되는 두 개의 int가 있습니다. integer.toString을 사용하여 완벽하게 작동하는 텍스트로 표시합니다. 이제 제 HTML에서 % 토큰이 두 번 있습니다. 첫 번째는 oldPrice가되고 두 ​​번째 것은 newPrice가됩니다.webview Android의 분할 문자열

그러나 정확히 동일한 참조이므로 둘 다 oldPrice가됩니다. 안드로이드 (Java)에서 첫 번째 %는 oldPrice가되어야하고 두 번째 %는 newPrice가되어야한다고 말하는 방법이 있습니까?

누군가 올바른 경로로 나를 도울 수 있습니까? 사전에

감사합니다, 자카 리아

html로 : Tegen % d 개 punten % 유로 .2f % 유로 voor .2f % @.

자바 코드 :

String taglineText = mStrings.getString(ApplicationStrings.ConfigNames.Redeem.REWARD_POINTS_WITH_PRICE).replace("%d", Integer.toString(item.shizzleP)).replace("%@", item.tagline).replace("%.2f",Integer.toString(item.oldPrice)).replace("%.2f", Integer.toString(item.newPrice)); 

PS : 나는 세 번째 %와 네 번째 %에 대해 이야기하고 (%의 .2f)

+0

이것은 이상하다. https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax 형식 문자열처럼 보이지만 % @은 패턴이 아닙니다. 그 % @를 % s로 대체 한 다음 String.format을 사용합니다. – njzk2

+0

을 추가 인수로 사용하면 '% .2f'는 정수로 대체되는 소수 2 자리의 숫자를 나타냅니다. 이는 예상 결과가 아닐 수 있습니다. – njzk2

답변

1

좋아, 여기에 쉬운 해결 방법은 다음과 같습니다

String taglineText = mStrings.getString(ApplicationStrings.ConfigNames.Redeem.REWARD_POINTS_WITH_PRICE).replace("%d", Integer.toString(item.shizzleP)).replace("%@", item.tagline).replaceFirst("%\\.2f",Integer.toString(item.oldPrice)).replaceFirst("%\\.2f", Integer.toString(item.newPrice)); 
+0

완벽하게 작동했습니다. 그 일을 내가 설명 할 수 있니? – Zakdroid

+0

예 dude, replaceFirst 메서드는 첫 번째 인수의 첫 번째 발생을 대체하지만 문자열의 형식으로 정규식을 사용합니다.이 정규식은 "% .2f"대신 "% \\. 2f" 대체되었으므로 메소드를 다시 호출하고 두 번째 패턴을 첫 번째 패턴으로 대체하고 원하는 출력을 얻습니다. –

+0

예 이해해 주셔서 감사합니다. 동료 : – Zakdroid

1

의견에서 말했듯이 문자열은 이며, @은 예외입니다. d는 아마도 s 일 것입니다. 나는 할 것이다 :

String taglineText = String.format(
    mStrings.getString(KEY).replace("%@", "%s"), 
    item.shizzleP, item.tagline, item.oldPrice, item.newPrice);