我必须从资源/值文件中连接这两个字符串:
<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();
但是第一个字符串末尾和第二个字符串开头的空格 已经消失了(当显示Toast时)......
我该怎么办?
我想答案就在这个documentation link
的某处或类似于使用 & ;
作为“&amp;”性格??
答案 0 :(得分:463)
即使您使用字符串格式,有时您仍然需要在字符串的开头或结尾处使用空格。对于这些情况,使用\
和xml:space
属性进行转义都无济于事。您必须将HTML实体 
用于空格。
将 
用于不易碎的空格
使用 
作为常规空间。
答案 1 :(得分:445)
我遇到了同样的问题。我想在表示屏幕字段名称的资源字符串末尾留空。
我在此问题报告中找到了解决方案:https://github.com/iBotPeaches/Apktool/issues/124
这与Duessi建议的想法相同。直接在XML中插入\u0020
以获取您想要保留的空白。
示例:
<string name="your_id">Score :\u0020</string>
替换是在构建时完成的,因此不会影响游戏的性能。
答案 2 :(得分:125)
此documentation建议引用可行:
<string name="my_str_spaces">" Before and after? "</string>
答案 3 :(得分:34)
我只是将UTF代码用于空间&#34; \ u0020&#34;在strings.xml文件中。
<string name="some_string">\u0020The name of my string.\u0020\u0020</string>
效果很好。 (Android喜欢UTF代码)
答案 4 :(得分:11)
这个问题可能很老了,但是到目前为止,最简单的方法是添加引号。 例如:
<string name="Toast_Memory_GameWon_part1">"you found ALL PAIRS ! on "</string>
<string name="Toast_Memory_GameWon_part2">" flips !"</string>
答案 5 :(得分:10)
答案 6 :(得分:8)
如果你真的想按照自己的方式去做,那么我认为你必须通过逃避它来告诉它空白是相关的:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string>
<string name="Toast_Memory_GameWon_part2">\ flips !</string>
但是,我会使用string formatting。如下所示:
<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);
答案 7 :(得分:5)
使用&#34;&#34;使用字符串资源值。
示例: &#34;值为空格&#34;
OR
使用\ u0020空格代码。
答案 8 :(得分:4)
运作良好 我正在使用\ 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();
答案 9 :(得分:1)
这里的所有答案对我都不起作用。相反,要在XML
中的字符串末尾添加空格,我就这样做了
<string name="more_store">more store<b> </b> </string>
答案 10 :(得分:1)
可以通过编程方式添加空格。由于这些案例经常用于连接,我决定停止疯狂,只做旧+ " " +
。这些将在大多数欧洲语言中有意义,我会聚集。
答案 11 :(得分: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>
答案 12 :(得分:0)
这可能实际上没有回答问题(如何在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();
答案 13 :(得分:0)
如果您需要空间以便以后将其与其他字符串连接在一起,则可以使用在字符串定义中添加参数的字符串格式化方法:
<string name="error_">Error: %s</string>
然后将字符串格式设置为:
String message = context.getString(R.string.error_, "Something went wrong")
答案 14 :(得分:0)
还有使用CDATA
的解决方案。示例:
<string name="test"><![CDATA[Hello world]]></string>
但是总的来说,我认为\u0020
足够好。
答案 15 :(得分:-6)
它不适用于xml:space =“preserve”
所以我用最快的方式做了=&gt;
我只需添加一个+“”+我需要的地方......
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);