簡體   English   中英

在string.xml中使用帶有%符號的占位符表示String.format()

[英]Use Placeholder with % sign in string.xml for String.format()

我在string.xml中使用占位符%1 $ d來獲取int值,然后我想在同一個TextView顯示% sign,這樣它就是% 所以我就這樣使用它。

<string name="uploadProgress">%1$d&#37;<string>

現在在Java Code我就這樣使用它。

int progress = 10;
textView.setText(String.format(getString(R.string.uploadProgress), progress));

但它顯示:

java.util.UnknownFormatConversionException:轉換:

我試過:

  1. %而不是&#37;
  2. %1$d&#37;之間加一個空格&#37; (但我實際上並不想要空間。)

但沒有運氣。 我怎樣才能做到這一點? 我已經看了另外一些SO解決問題,但我找不到特別的問題。

我也遇到過這種情況。 有兩種方法可以轉義XML字符串資源中的文字百分比符號。

對於您的情況(帶參數的字符串,例如%1$d ),您應該使用%%來轉義百分比符號文字。

如果您的字符串沒有參數,那么您應該使用\%來轉義文字百分比符號。

如果在沒有參數的字符串中使用%% ,則getString()會將其解析為文字%%而不是轉義它。 如果在參數的字符串中使用\% ,則getString()會在嘗試將該%作為格式參數處理時崩潰。

如果您的字符串資源沒有參數,那么您可以使用formatted =“false”屬性。

在你的情況下你需要使用雙倍%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM