2014-11-21 4 views
-2

У меня есть веб-просмотр, который выбирает немного html с сервера. В Webview есть два ints, которые передаются с помощью «токена»%. Я использую integer.toString, чтобы сделать его видимым как текст, который отлично работает. Теперь в моем HTML у меня есть 2-процентный токен, первый должен стать oldPrice, а второй - стать новымPrice.Разделительная строка веб-браузера Android

Однако оба становятся старыми, потому что это точно такая же ссылка. Есть ли способ сказать в Android (Java), первый% должен стать oldPrice, а второй% должен стать newPrice?

Может ли кто-нибудь помочь мне на правильном пути?

Спасибо заранее, Закария

HTML-: Tegen % d punten % @ % .2f евро Вур % .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

+0

как дополнительный аргумент, '% .2f' указывает число с двумя десятичными знаками, которое вы заменяете целым числом. Вероятно, это не ожидаемый результат. – njzk2

ответ

1

Ok, вот простое решение:

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

yes dude, replaceFirst метод заменяет первое появление первого аргумента, но он принимает регулярное выражение в виде строки, поэтому я использовал «% \\. 2f» вместо «% .2f», теперь, поскольку первый шаблон был заменен, мы снова вызываем метод, и он заменяет второй шаблон, рассматривая его как первый, и мы получаем желаемый результат, был ли я понятен? –

+0

Да, я это понимаю, спасибо за пояснение :) – Zakdroid

1

Как указано в комментариях, ваша строка является format string, за исключением @, которой shoul вероятно, будет s. Я бы сделал:

String taglineText = String.format(
    mStrings.getString(KEY).replace("%@", "%s"), 
    item.shizzleP, item.tagline, item.oldPrice, item.newPrice); 
Смежные вопросы