【问题标题】:String.format or getStringString.format 或 getString
【发布时间】:2016-11-11 11:18:57
【问题描述】:

为了格式化字符串,我总是使用String.format(getString(R.string.something),arg1)

但是我在文档中看到 getString(string, args) 可以做同样的事情。

因此,我想知道为什么每个人都使用 String.format 如果 getString 可以做同样的事情

谢谢

【问题讨论】:

  • 答案是肯定的。在这里查看最受好评的答案。 stackoverflow.com/questions/12627457/…
  • @Doomsknight,问题是Why?。答案不能是Yes
  • @VladMatvienko 措辞错误对不起。我的意思是它们是相同的,除了一个更直接。不是每个人都知道更好的方法,根据链接的答案,您可以看到接受的答案表示一种方法,而最受好评的答案表示第二种方法。因此,人们对所使用的东西的看法更多。我也不总是以最佳方式编程。在某些编码方式已经记录后,一些 API 也会在以后推出。
  • 还从文档中注意到,它显示了第一种方法的示例用法,而不是第二种方法。所以使用它作为参考的人遵循第一个用法。 developer.android.com/guide/topics/resources/…

标签: android android-resources


【解决方案1】:

你错了,没有方法Resources.getString(string, args...)Context.getString(string, args...)Resources.getString(int, args...) 接受一个 int 和 objects。

格式化字符串时,您将使用String.format(string, args...)。但在 Android 中,您的字符串资源可能位于 res 文件夹中,因此您有一种方便的方法可以从资源中获取字符串并使用String.format 对其进行格式化。它和你做的一样(taken from Android source):

@NonNull
public String getString(@StringRes int id, Object... formatArgs) throws NotFoundException {
    final String raw = getString(id);
    return String.format(mResourcesImpl.getConfiguration().getLocales().get(0), raw,
            formatArgs);
}

你会像这样使用它:

getString(R.string.something, arg1)

省去打字的时间。

【讨论】:

  • 对不起,是的,你是对的。我第一次误解了你的答案,因为它是用相当复杂的语言写的。
  • 我认为他的问题实际上是指Resources.getString(int, args...),而且它更针对他们为什么使用一种方法而不是另一种方法
猜你喜欢
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多