我已经连接这两个串从我的资源/价值的文件:

<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();

但是,空间结束时的第一串并在开始的第二字符串 已经消失(当吐司所示)...

我应该怎么做?

我猜答案是这里的某个地方在这 文件的链接

或者是一些喜欢使用 &amp ; 对于"&"字??

有帮助吗?

解决方案

即使你使用字符串格式化,有时你还需要在开始空格或您的字符串的结尾。对于这些情况,也没有用\逃避,也不xml:space属性帮助。您必须使用HTML实体&#160;为空白。

使用&#160;非易碎的空格。结果 使用&#032;定期空间。

其他提示

我碰到了同样的问题。我想,在代表一个屏幕上的字段名称的资源字符串的结尾留下的空白。

我发现这个问题的报告的解决方案: 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="space_demo">|&#x20;|&#x2009;|&#x200A;||</string>

| SPACE |狭窄的空间| HAIR SPACE |没有空间|

可视化:

“在这里输入的图像描述”

如果你真的想这样做的方式,你们在做那么我认为你必须告诉它的空白是有关通过逃避它:

<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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top