2014-11-21 51 views
-2

我有一個webview從服務器中挑選一些html。在Webview中,有兩個整數通過%「標記」傳遞。我使用integer.toString使它可以看作完美工作的文本。現在,在我的HTML中,我有兩次%的標記,第一個意思是成爲oldPrice,第二個是成爲newPrice。webview的拆分字符串Android

然而,兩者都成爲oldPrice,因爲它完全相同。有沒有辦法在Android(Java)中說,第一個%必須變成oldPrice,第二個%必須變成newPrice?

有人能幫助我走上正確的道路嗎?

由於提前, 扎卡里亞

的HTML: Tegen %d punten %@ %.2f歐元VOOR %.2f歐元。

Java代碼:

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 2014-11-21 14:05:06

+0

作爲進一步的參數,'%.2f'表示一個2位小數的數字,用一個整數替換。這可能不是預期的結果。 – njzk2 2014-11-21 14:06:04

回答

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 2014-11-21 14:04:45

+0

yes dude,replaceFirst方法替換第一個參數的第一個出現,但它以字符串的形式採用正則表達式,這就是爲什麼我使用「%\\。2f」而不是「%.2f」,現在自第一個模式已被替換,我們再次調用該方法,並將第二種模式視爲第一種模式,我們可以得到所需的輸出結果,我清楚了嗎? – 2014-11-21 14:09:02

+0

是的,我明白了,謝謝你的解釋隊友:) – Zakdroid 2014-11-21 14:24:58

1

正如評論中所說,你的字符串是format string,除了@,其中肩d可能是s。我會這樣做:

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