my strings.xml有几个字符串,格式如下
过去%1$d天内没有新邮件。
我在Java代码中使用它们,如下所示:
string.format(获取字符串(r.string.msg_str),3);
我成功地收到“最近3天没有新消息”。
现在,我该如何将整型参数部分放在arabic的values ar->strings.xml文件中的上述字符串中?
我试过用几种方法,如%1$d或d$1%或200f%1$d等,但似乎没有效果。我不能把论点正确地打印成3。
示例:_______________
在Java代码部分,我尝试了string.format(locale.getdefault(),getstring(r.string.msg_str),3);
当电话语言设置为阿拉伯语时,我希望上述字符串的输出如下:
____________㶋_。
以上是谷歌翻译的翻译。

最佳答案

我从你的问题中提取文本并粘贴到我的strings.xml文件中:
android - Android:处理从右到左语言(如阿拉伯语)的整数(%1 $ d)和字符串(%1 $ s)参数-LMLPHP
当我运行我的应用程序时,我马上就会崩溃。它所做的就是:

    TextView textView = (TextView) findViewById(R.id.text);
    textView.setText(getString(R.string.formatting, 6));

这是车祸:
E/AndroidRuntime( 5739): Caused by: java.util.UnknownFormatConversionException: Conversion: أ
E/AndroidRuntime( 5739):  at java.util.Formatter$FormatToken.unknownFormatConversionException(Formatter.java:1399)
E/AndroidRuntime( 5739):  at java.util.Formatter$FormatToken.checkFlags(Formatter.java:1336)
E/AndroidRuntime( 5739):  at java.util.Formatter.transform(Formatter.java:1442)
E/AndroidRuntime( 5739):  at java.util.Formatter.doFormat(Formatter.java:1081)
E/AndroidRuntime( 5739):  at java.util.Formatter.format(Formatter.java:1042)
E/AndroidRuntime( 5739):  at java.util.Formatter.format(Formatter.java:1011)
E/AndroidRuntime( 5739):  at java.lang.String.format(String.java:1999)

接下来,我突出显示了format参数(d$1%),删除了它,并重新键入了它(通过按%1$d)。我的绳子现在看起来像这样:
android - Android:处理从右到左语言(如阿拉伯语)的整数(%1 $ d)和字符串(%1 $ s)参数-LMLPHP
现在,当我运行我的应用程序时,它运行得很好:
android - Android:处理从右到左语言(如阿拉伯语)的整数(%1 $ d)和字符串(%1 $ s)参数-LMLPHP
因为这两个字符串在我看来是相同的,所以我假设第一个字符串中有一些与文本方向相关的非打印字符。这些非打印字符可能会混淆字符串格式参数的解析。

10-04 22:57
查看更多