web-dev-qa-db-ja.com

文字列の末尾および/または先頭にスペースを保持する方法は?

リソース/値ファイルからこれらの2つの文字列を連結する必要があります。

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>

私はこのようにします:

String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+total_flips+getString(R.string.Toast_Memory_GameWon_part2);

Toast.makeText(this, message_all_pairs_found, 1000).show();

しかし、最初の文字列の最後と2番目の文字列の先頭のスペースは消えました(Toastが表示されている場合)...

私は何をすべきか ?

答えはこの中のどこかにあると思います ドキュメントリンク

または、「&」文字に&amp ;を使用するようなものですか?

315
Hubert

文字列の書式設定を使用する場合でも、文字列の先頭または末尾に空白が必要な場合があります。これらの場合、\でのエスケープもxml:space属性も役立ちません。空白にはHTMLエンティティ&#160;を使用する必要があります。

分割できない空白には&#160;を使用します。
通常のスペースには&#032;を使用します。

464
duessi

私は同じ問題に遭遇しました。画面上のフィールド名を表すリソース文字列の最後に空白を残したかった。

この問題レポートで解決策を見つけました: https://github.com/iBotPeaches/Apktool/issues/124

これは、デュエシが提案するのと同じ考えです。保存したいブランクのXMLに\u0020を直接挿入します。

例:

<string name="your_id">Score :\u0020</string>

置換はビルド時に行われるため、ゲームのパフォーマンスには影響しません。

445
DavGin

この ドキュメント は、引用が機能することを示唆しています。

<string name="my_str_spaces">" Before and after? "</string>
125
Skywalker5446

Strings.xmlファイルのスペース「\ u0020」にUTFコードを使用します。

<string name="some_string">\u0020The name of my string.\u0020\u0020</string>

よく働く。 (AndroidはUTFコードが大好きです)

34
Jasen

この質問は古いかもしれませんが、現時点で最も簡単な方法は引用符を追加することです。例えば:

<string name="Toast_Memory_GameWon_part1">"you found ALL PAIRS ! on "</string>
<string name="Toast_Memory_GameWon_part2">" flips !"</string>
11
kyay

異なる幅でスペースを空けることが可能です:

<string name="space_demo">|&#x20;|&#x2009;|&#x200A;||</string>

|スペース|薄いスペース|ヘアスペース|スペースなし|

視覚化:

enter image description here

10
Andrey

本当にあなたがやっていた方法でそれをやりたいなら、私はあなたがそれをエスケープすることによって空白が関連していることを伝えなければならないと思う。

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string>
<string name="Toast_Memory_GameWon_part2">\ flips !</string>

ただし、これには string format を使用します。次のようなもの:

<string name="Toast_Memory_GameWon">you found ALL PAIRS ! on %d flips !</string>

それから

String message_all_pairs_found = String.format(getString(R.string.Toast_Memory_GameWon), total_flips);
8
Jeremy Logan

文字列リソース値で「」を使用します。

例:「スペースを含む値」

OR

スペースには\ u0020コードを使用します。

5
Bhupendra Joshi

私は\ u0020を使用しています

<string name="hi"> Hi \u0020 </string>
<string name="ten"> \u0020 out of 10  </string>
<string name="youHaveScored">\u0020 you have Scored \u0020</string>

Javaファイル

String finalScore = getString(R.string.hi) +name+ getString(R.string.youHaveScored)+score+ getString(R.string.ten);
               Toast.makeText(getApplicationContext(),finalScore,Toast.LENGTH_LONG).show();

スクリーンショットここでこのコードの動作を示す画像

4
Tarsbir Singh

プログラムでスペースを追加するための引数を作成できます。これらのケースは連結で頻繁に使用されるため、狂気を止めて古い+ " " +を実行することにしました。これらはmostヨーロッパ言語で意味があります。

1
MPelletier

ここでの答えはすべてうまくいきませんでした。代わりに、XMLの文字列の末尾にスペースを追加するために、これを行いました

<string name="more_store">more store<b> </b> </string>
1
toobsco42

CDATAを使用するソリューションもあります。例:

<string name="test"><![CDATA[Hello          world]]></string>

しかし、一般的には\u0020で十分だと思います。

0

私は特にAndroidについては知りませんが、これは通常のXML空白処理に似ています-要素内の先頭と末尾の空白は一般に重要ではないとみなされ、削除されます。 xml:spaceを試してください:

<string name="Toast_Memory_GameWon_part1" xml:space="preserve">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2" xml:space="preserve"> flips !</string>
0
Pavel Minaev

後で他の文字列と連結するためにスペースが必要な場合は、文字列定義に引数を追加する文字列フォーマットのアプローチを使用できます。

<string name="error_">Error: %s</string>

次に、文字列を次のようにフォーマットします。

String message = context.getString(R.string.error_, "Something went wrong")
0
TheIT

これは実際には質問(XMLで空白を保持する方法)に答えないかもしれませんが、根本的な問題をより優雅に解決するかもしれません。

XMLリソースのみに依存する代わりに、フォーマット文字列を使用して連結します。最初に空白を削除します

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on</string>
<string name="Toast_Memory_GameWon_part2">flips !</string>

そして、文字列を異なる方法で構築します。

String message_all_pairs_found = 
      String.format(Locale.getDefault(), 
                    "%s %d %s", 
                    getString(R.string.Toast_Memory_GameWon_part1),
                    total_flips,
                    getString(R.string.Toast_Memory_GameWon_part2);

Toast.makeText(this, message_all_pairs_found, 1000).show();
0
Skusku