2013-05-30 35 views
20

Tôi đang cố gắng định dạng một chuỗi từ string.xml để sử dụng lại nó với một vài Giá trị. Tôi đang chạy vào một số vấn đề như String cũng nên chứa tỷ lệ phần trăm-biểu tượng được sử dụng bởi trình định dạng. Tôi đã cố gắng để thay thế các biểu tượng% vào trình bày unicode của nó nhưng điều đó không có vẻ làm việc:biểu tượng phần trăm trong strings.xml

<?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 Code:

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

Trong ví dụ này. teststring và teststring2 sẽ tạo ra một lỗi, trong khi teststring3 hoạt động tốt. Whats cách chính xác để đặt rằng biểu tượng% trong chuỗi xml để có được "Giá trị mới là 25%" như là chuỗi định dạng?

Cảm ơn sự giúp đỡ của bạn.

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-- Cảm ơn trợ giúp. Câu trả lời đúng là

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

format = "false" không được đặt.

+0

i thay đổi nội dung câu trả lời thử nó –

Trả lời

30

Sử dụng

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

</resources> 

Trong java

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

doesnt làm việc. ngoại lệ tương tự: ( – danijoo

+0

tôi đã sửa câu trả lời, hãy thử nó –

+2

% 1 $ s %% hoạt động cho tôi. Cảm ơn – Rob

4

Bạn có thể thử \%% thay vì% ??

Giống như,

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

Hoặc

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

Sử dụng \ %% doenst làm việc – danijoo

+0

Bạn đã cố gắng thiết lập định dạng = "false" –

+0

Nếu đó là công việc quá doesnt thay thế% với %% –

0

hệ e như thế này:

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

shoulnt này giống như String str = context.getResources(). getString (R.string.teststring, value);? – danijoo

0

Kiểm tra thế này,

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

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

Hãy thử điều này

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

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

Nếu bây giờ Log.d (TAG, formattedString); nó sẽ ghi

The new value is 25% 
+0

Đồng ý Sửa lỗi Cảm ơn Micky đã chỉ ra nó. – Andrey

Các vấn đề liên quan