首页 文章

如何在String的结尾和/或开头保留空格?

提问于
浏览
314

我必须从我的资源/值文件连接这两个字符串:

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

15 回答

  • 441

    这个documentation建议引用会起作用:

    <string name="my_str_spaces">" Before and after? "</string>
    
  • 9

    我只是在strings.xml文件中使用UTF代码“\ u0020” .

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

    效果很好 . (Android喜欢UTF代码)

  • 1

    这个问题可能很旧,但截至目前,最简单的方法是添加引号 . 例如:

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

    可能有不同宽度的空间:

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

    |空间|薄的空间|头发空间|没有空间|

    可视化:

    enter image description here

  • 0

    即使您使用字符串格式,有时您仍然需要在字符串的开头或结尾处使用空格 . 对于这些情况,使用 \xml:space 属性进行转义都不会有帮助 . 您必须将HTML实体 &#160; 用于空格 .

    &#160; 用于不可破解的空格 .
    使用 &#032; 作为常规空间 .

  • -6

    我遇到了同样的问题 . 我想在表示屏幕字段名称的资源字符串末尾留空 .

    我在此问题报告中找到了解决方案:https://github.com/iBotPeaches/Apktool/issues/124

    这与Duessi建议的想法相同 . 直接在XML中插入 \u0020 ,以获取要保留的空白 .

    示例:

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

    替换是在构建时完成的,因此不会影响游戏的性能 .

  • 122

    如果你真的想按照你的方式去做那么我认为你必须通过逃避它来告诉它空白是相关的:

    <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);
    
  • 460

    将“”与字符串资源值一起使用 .

    示例:“带空格的值”

    要么

    使用\ u0020空间代码 .

  • 1

    运作良好我正在使用\ 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 file

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

    截图here Image of Showing Working of this code

  • 9

    这里的所有答案对我都不起作用 . 相反,要在 XML 中的字符串末尾添加空格,我就这样做了

    <string name="more_store">more store<b> </b> </string>
    
  • 0

    可以通过编程方式添加空格 . 由于这些案例经常用于连接,我决定停止疯狂,只做旧的 + " " + . 我会收集这些在大多数欧洲语言中都有意义的 .

  • 34

    我不知道特别是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>
    
  • 8

    这可能实际上没有回答问题(如何在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();
    
  • 5

    如果您需要空间以便稍后将其与其他字符串连接,那么您可以使用字符串格式化方法向字符串定义添加参数:

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

    然后将字符串格式化为:

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

    它不适用于xml:space =“preserve”

    所以我以最快的方式做到了=>

    我只是添加了一个“”,我需要它...

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

相关问题