Saya harus menyatukan dua string ini dari file sumber daya / nilai saya:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>
Saya melakukannya dengan cara ini:
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();
Tetapi spasi di akhir string pertama dan di awal string kedua telah menghilang (ketika Toast ditampilkan) ...
Apa yang harus saya lakukan ?
Saya kira jawabannya ada di sini di tautan dokumentasi ini
atau apakah itu sesuatu seperti menggunakan & ;
untuk karakter "&" ??
android
string-concatenation
Hubert
sumber
sumber
Jawaban:
Bahkan jika Anda menggunakan pemformatan string, terkadang Anda masih membutuhkan spasi putih di awal atau di akhir string Anda. Untuk kasus ini, tidak ada yang lolos
\
, atauxml:space
atribut membantu. Anda harus menggunakan entitas HTML 
untuk spasi putih.Gunakan
 
untuk ruang putih yang tidak dapat dipecahkan.Gunakan
 
untuk ruang biasa.sumber
 
, dan saya tidak mendapatkan kesalahan build, tetapi ruang saya masih diabaikan. 
bekerja, tapi saya tidak ingin spasi kosong. Saya hanya ingin ruang biasa.\u0020
bekerja.Saya mengalami masalah yang sama. Saya ingin membiarkan yang kosong di ujung string sumber yang mewakili nama bidang di layar.
Saya menemukan solusi pada laporan masalah ini: https://github.com/iBotPeaches/Apktool/issues/124
Ini adalah ide yang sama yang dikemukakan Duessi. Masukkan
\u0020
langsung dalam XML untuk kosong yang ingin Anda pertahankan.Contoh:
Penggantian dilakukan pada waktu build, oleh karena itu tidak akan mempengaruhi kinerja game Anda.
sumber
\u0020
adalah SPACE dari kode ASCII. Ini adalah pilihan terbaik untuk proyek saya karena saya harus memastikan itu adalah ASCII.Dokumentasi ini menyarankan agar kutipan berhasil:
sumber
<string name="my_str_spaces">" Before <b>and</b> after? "</string>
Enclose the entire string in double quotes ("This'll work", for example)
mana ia membahas tentang melarikan diriSingle quote (')
.Saya hanya menggunakan kode UTF untuk spasi "\ u0020" di file strings.xml.
bekerja dengan baik. (Android menyukai kode UTF)
sumber
Pertanyaan ini mungkin sudah lama, tetapi sampai sekarang cara termudah untuk melakukannya adalah menambahkan tanda kutip. Sebagai contoh:
sumber
Ada kemungkinan untuk ruang dengan lebar berbeda:
| SPACE | RUANG TIPIS | RUANG RAMBUT | tidak ada ruang |
Visualisasi:
sumber
Jika Anda benar-benar ingin melakukannya dengan cara yang Anda lakukan maka saya pikir Anda harus mengatakannya bahwa spasi putih relevan dengan menghindarinya:
Namun, saya akan menggunakan pemformatan string untuk ini. Sesuatu seperti yang berikut ini:
kemudian
sumber
String.format
menyebabkan banyak alokasi memori yang tidak diinginkan dalam game.gunakan "" dengan nilai sumber daya string.
Contoh: "nilai dengan spasi"
ATAU
gunakan kode \ u0020 untuk spasi.
sumber
Bekerja dengan baik, saya menggunakan \ u0020
File Java
Tangkapan layar di sini Gambar Menampilkan Bekerja dari kode ini
sumber
Argumen dapat dibuat untuk menambahkan ruang secara terprogram. Karena kasus-kasus ini akan sering digunakan dalam pertemuan, saya memutuskan untuk menghentikan kegilaan dan melakukan yang lama
+ " " +
. Ini akan masuk akal di sebagian besar bahasa Eropa, saya akan kumpulkan.sumber
Semua jawaban di sini tidak bekerja untuk saya. Sebagai gantinya, untuk menambahkan spasi di akhir string di
XML
saya melakukan inisumber
Saya tidak tahu tentang Android pada khususnya, tetapi ini tampak seperti penanganan spasi putih XML biasa - memimpin dan mengikuti spasi putih dalam suatu elemen umumnya dianggap tidak signifikan dan dihapus. Coba
xml:space
:sumber
xml:space
sepertinya diabaikan.Ini mungkin tidak benar-benar menjawab pertanyaan (Bagaimana menjaga spasi putih di XML) tetapi mungkin memecahkan masalah yang mendasarinya lebih anggun.
Alih-alih hanya mengandalkan sumber daya XML, gabungkan menggunakan string format. Jadi pertama-tama hapus spasi putih
Dan kemudian membangun string Anda secara berbeda:
sumber
Ada juga solusi menggunakan
CDATA
. Contoh:Namun secara umum menurut saya
\u0020
cukup baik.sumber
Jika Anda membutuhkan ruang untuk tujuan kemudian menggabungkannya dengan string lain, maka Anda dapat menggunakan pendekatan pemformatan string dengan menambahkan argumen ke definisi string Anda:
Kemudian untuk memformat string (mis. Jika Anda memiliki kesalahan yang dikembalikan oleh server, jika tidak gunakan
getString(R.string.string_resource_example)
):Yang mengakibatkan:
sumber
Itu tidak bekerja dengan xml: space = "preservate"
jadi saya melakukannya dengan cara tercepat =>
Saya hanya menambahkan + "" + di mana saya membutuhkannya ...
sumber