如何保持空间的结束和/或在开始一个字符串?
-
22-09-2019 - |
题
我已经连接这两个串从我的资源/价值的文件:
<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();
但是,空间结束时的第一串并在开始的第二字符串 已经消失(当吐司所示)...
我应该怎么做?
我猜答案是这里的某个地方在这 文件的链接
或者是一些喜欢使用 & ;
对于"&"字??
解决方案
即使你使用字符串格式化,有时你还需要在开始空格或您的字符串的结尾。对于这些情况,也没有用\
逃避,也不xml:space
属性帮助。您必须使用HTML实体 
为空白。
使用 
非易碎的空格。结果
使用 
定期空间。
其他提示
我碰到了同样的问题。我想,在代表一个屏幕上的字段名称的资源字符串的结尾留下的空白。
我发现这个问题的报告的解决方案: https://github.com/iBotPeaches/Apktool /问题/ 124
这是相同的想法,Duessi暗示。直接插入的XML中空白\u0020
你想保存。
示例:
<string name="your_id">Score :\u0020</string>
在替换在编译时完成的,因此它不会影响你的游戏性能。
此文档建议报价将工作:
<string name="my_str_spaces">" Before and after? "</string>
我只是用空间“\ u0020”的UTF代码在strings.xml档案
<string name="some_string">\u0020The name of my string.\u0020\u0020</string>
伟大工程。 (机器人爱UTF码)
这问题可能是旧的,但截至目前为止最简单的方法来做到这一点是加上引号。 例如:
<string name="Toast_Memory_GameWon_part1">"you found ALL PAIRS ! on "</string>
<string name="Toast_Memory_GameWon_part2">" flips !"</string>
如果你真的想这样做的方式,你们在做那么我认为你必须告诉它的空白是有关通过逃避它:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string>
<string name="Toast_Memory_GameWon_part2">\ flips !</string>
然而,我会使用 串格式化 这一点。喜欢的东西如下:
<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);
使用 “” 与字符串资源值。
实施例: “用空格值”
OR
供的空间中使用\ u0020代码
工作良好 我使用\ u0020
<string name="hi"> Hi \u0020 </string>
<string name="ten"> \u0020 out of 10 </string>
<string name="youHaveScored">\u0020 you have Scored \u0020</string>
<强>爪哇文件
String finalScore = getString(R.string.hi) +name+ getString(R.string.youHaveScored)+score+ getString(R.string.ten);
Toast.makeText(getApplicationContext(),finalScore,Toast.LENGTH_LONG).show();
截图 的显示这个代码
的工作这里图片所有的答案在这里并没有为我工作。取而代之的是,在一个字符串中XML
末尾添加空间我这样做
<string name="more_store">more store<b> </b> </string>
这是参数可以以编程添加空间中进行。由于这些情况将在级联经常使用,我决定不再疯狂,只是做旧+ " " +
。这将使的最的欧洲语言的意义,我会收集。
我没有关于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>
这实际上可能没有回答这个问题(如何保持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();
还有使用CDATA
的溶液。例如:
<string name="test"><![CDATA[Hello world]]></string>
但总的来说,我认为\u0020
是不够好。
如果您需要的后来与其它字符串连接为目的的空间,那么你可以使用字符串格式化参数添加到您的字符串定义的方法:
<string name="error_">Error: %s</string>
然后格式化的字符串为:
String message = context.getString(R.string.error_, "Something went wrong")
它不工作的XML:空间= “保留”
,所以我做它的最快方式=>
我简单地增加了一个+”“+,其中我需要它...
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);