Подтвердить что ты не робот

Процент символа в strings.xml

Я пытаюсь отформатировать строку из string.xml, чтобы повторно использовать ее с несколькими значениями. Я сталкиваюсь с некоторыми проблемами, поскольку строка также должна содержать символ процента, который используется форматированием. Я уже пытался заменить символ% на его unicode-представление, но, похоже, не работает:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="teststring">The new value is %1$s%</string>
    <string name="teststring2">The new value is %1$s\u0025</string>
    <string name="teststring3">The new value is %1$s</string>
</resources>

Код Java:

String value = "25";
String formattedString = context.getResources().getString(R.string.teststring), value);

В этом примере. teststring и teststring2 выдают ошибку, а teststring3 отлично работает. Каков правильный способ поместить этот символ% в xml-строку, чтобы получить "Новое значение 25%" в качестве форматированной строки?

Спасибо за вашу помощь.

StackTrace:

FATAL EXCEPTION: main
java.util.UnknownFormatConversionException: Conversion: 
    at java.util.Formatter$FormatSpecifierParser.unknownFormatConversionException(Formatter.java:2304)
    at java.util.Formatter$FormatSpecifierParser.advance(Formatter.java:2298)
    at java.util.Formatter$FormatSpecifierParser.parseConversionType(Formatter.java:2377)
    at java.util.Formatter$FormatSpecifierParser.parseArgumentIndexAndFlags(Formatter.java:2348)
    at java.util.Formatter$FormatSpecifierParser.parseFormatToken(Formatter.java:2281)
    at java.util.Formatter.doFormat(Formatter.java:1069)
    at java.util.Formatter.format(Formatter.java:1040)
    at java.util.Formatter.format(Formatter.java:1009)
    at java.lang.String.format(String.java:1988)
    at android.content.res.Resources.getString(Resources.java:343)
    at (... and so on)

- EDIT-- Спасибо за помощь. Правильный ответ

<string name="teststring">The new value if %1$s%%</string>

formatted = "false" не должно быть установлено.

4b9b3361

Ответ 1

Используйте

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="teststring">The new value is %1$s%%</string>

</resources>

В java

String value = "25";
String formattedString =
    String.format(getResources().getString(R.string.teststring), value);
Log.i("",formattedString);

Ответ 2

Можете ли вы попробовать \%% вместо%?

Как

<string name="teststring">The new value is \%%</string>

или

<string formatted="false" name="teststring" >The new value is %</string>

Ответ 3

Попробуйте это

<string  name="teststring"> The new value is %1$s %% </string>

Ответ 4

String value = "25";

String formattedString = "The new value is " + value + (char) 0x0025;

Если теперь Log.d(TAG, formattedString); он будет записывать

The new value is 25%

Ответ 5

Используйте это:

String str = context.getResources().getString(R.string.teststring);
String formattedString = String.format(str, value);

Ответ 6

Проверьте это,

<string name="teststring">The new value is %1$s %%</string>

String value = "25";
String formattedString = this.getResources().getString(R.string.teststring, mPageNumber);