在`strings.xml`中是否可以使用参数?

13 浏览
0 Comments

在`strings.xml`中是否可以使用参数?

在我的Android应用中,我将使用国际化实现我的字符串。我在语法和句子在不同语言中的构建方式上遇到了问题。

例如:

"5 minutes ago" - 英语

"vor 5 Minuten" - 德语

我能在strings.xml中做类似下面这样的事情吗?

{0}分钟前

然后像这样使用一些魔法

getString(R.id.timeFormat, dynamicTimeValue)

这种行为也会解决不同语言中不同的词序问题。

0
0 Comments

在开发Android应用时,经常需要在字符串中使用String.format(String, Object...)方法进行格式化。如果想要在字符串资源中使用这种方法,可以将格式化参数放在字符串资源中。例如,可以在字符串资源中定义如下内容:

Hello, %1$s! You have %2$d new messages.

在这个例子中,格式化字符串有两个参数:%1$s表示一个字符串,%2$d表示一个十进制数字。可以通过以下方式在应用中使用这些参数进行格式化:

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);

如果想了解更多信息,请参考:[http://developer.android.com/intl/pt-br/guide/topics/resources/string-resource.html#FormattingAndStyling](http://developer.android.com/intl/pt-br/guide/topics/resources/string-resource.html#FormattingAndStyling)

以上就是在Android中使用字符串资源进行格式化的方法。

0
0 Comments

问题的出现原因是需要在XML中使用两个变量,但是不知道如何在XML中定义这些变量。解决方法是使用%1$d text... %2$d%1$s text... %2$s来表示字符串变量,并在XML中定义这些变量。然后在Java代码中使用getString方法来获取字符串,并传入相应的参数。需要注意的是,先要在XML中定义参数,否则getString方法会编译错误,因为它需要提前知道需要多少个参数。

0
0 Comments

在strings.xml中使用参数的原因是为了能够动态地将变量插入到字符串中。这样做的好处是可以根据需要修改字符串的内容,而不需要修改代码。

解决方法是使用标准的`String.format()`方法来格式化字符串。可以使用`Context.getString(int, Object...)`方法来获取格式化后的字符串。在strings.xml中定义字符串时,可以使用`%1$d`来表示参数的位置,然后在代码中通过传入参数的方式来替换这个位置。

例如,在strings.xml中定义一个字符串:

%1$d minutes ago

然后在代码中使用`getString()`方法来获取格式化后的字符串:

String timeString = getString(R.string.timeFormat, 5);

这样,`timeString`的值将会是"5 minutes ago"。

通过这种方式,我们可以方便地将参数插入到字符串中,使得字符串的内容更加灵活和可定制。

0