【问题标题】:How to pass Data to the getText?如何将数据传递给getText?
【发布时间】:2014-04-12 14:21:52
【问题描述】:

我有以下字符串资源:

<string name="foo">This is a {0} test. Hello {1}</string>

现在我想在调用时传递值 1foo

getResources().getText(R.string.foo)

这个怎么做?还是不可能?

【问题讨论】:

    标签: android


    【解决方案1】:

    getResources().getString(R.string.foo, 1, "foo"); 但字符串应该使用string format ...所以字符串中的字符串应该如下所示:

    <string name="foo">This is a %d test. Hello %s</string>
    

    【讨论】:

      【解决方案2】:

      我不太确定 Java 是否有这样的内置功能。我曾经写过一个方法可以做你正在寻找的确切事情,但是:

      public static String format(String str, Object... objects)
      {
          String tag = "";
      
          for (int i = 0; i < objects.length; i++)
          {
              tag = "\\{" + i + "\\}";
              str = str.replaceFirst(tag, objects[i].toString());
          }
      
          return str;
      }
      

      这将格式化字符串,用传递的对象替换“{i}”;就像在 C# 中一样。

      示例:

      format(getResources().getString(R.string.foo), "cool", "world!");
      

      【讨论】:

        【解决方案3】:

        你可以这样做:
        string name="foo"&gt;This is a %d test. Hello %s string&gt;

        getString(R.string.foo, 1, "foo");

        来源:Are parameters in strings.xml possible?

        您可以在此处找到有关格式和格式的更多信息:http://developer.android.com/reference/java/util/Formatter.html

        【讨论】:

          【解决方案4】:

          我相信做你想做的最简单的方法是将你必须的代码行保存到一个变量中,然后使用 Java String replace() 函数。

          String fooText = getResources().getText(R.string.foo);
          fooText = fooText.replace("{0}", myZeroVar);
          fooText = fooText.replace("{1}", myOneVar);
          

          【讨论】:

            猜你喜欢
            • 2010-10-22
            • 2021-05-29
            • 2019-05-08
            • 2017-01-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多