1. ホーム
  2. android

[解決済み] strings.xmlに実行時の値をプレースホルダーとして持たせることは可能ですか?

2022-03-16 08:55:09

質問

の文字列値にプレースホルダーを持たせることは可能ですか? string.xml 実行時に値を割り当てることができますか?

ある文字列 PLACEHOLDER1 その他の文字列

解決方法は?

フォーマットとスタイリング

はい、以下からご覧ください。 文字列のリソース。書式設定とスタイル

を使用して文字列をフォーマットする必要がある場合 String.format(String, Object...) であれば、stringリソースにformat引数を記述することで実現できます。例えば、次のようなリソースがあるとします。

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

この例では、フォーマット文字列には2つの引数があります。 %1$s は文字列であり %2$d は10進数です。アプリケーションからの引数で文字列をフォーマットすると、次のようになります。

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);

基本的な使用方法

注意点 getString には、その文字列をフォーマット文字列として使用するオーバーロードがあります。

String text = res.getString(R.string.welcome_messages, username, mailCount);

複数形

複数形を処理する必要がある場合は、これを使用します。

<plurals name="welcome_messages">
    <item quantity="one">Hello, %1$s! You have a new message.</item>
    <item quantity="other">Hello, %1$s! You have %2$d new messages.</item>
</plurals>

最初の mailCount は使用する書式 (単一または複数) を決定するために使用され、他のパラメータは代用品です。

Resources res = getResources();
String text = res.getQuantityString(R.plurals.welcome_messages, mailCount, username, mailCount);

参照 文字列のリソース。複数形 をご覧ください。