You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android Studio中输入含非阿拉伯字符的RTL占位符字符串

崩溃问题原因

你出现崩溃是因为占位符语法写错了,Android字符串占位符的标准格式为%[索引]$[类型],你把%2$s错误写成s$2%,不符合格式化规则才触发java.util.DuplicateFormatFlagsException报错。


可行的RTL适配方案

方案1:直接调换阿拉伯语资源的占位符顺序

在阿拉伯语对应的values-ar/strings.xml文件中,直接按你需要的顺序写符合语法的占位符即可,不需要反转格式:

<string name="substring_two_substrings_dash">%2$s - %1$s</string>

这种方式最直观,运行时会按你写的顺序格式化字符串,不会产生崩溃。

方案2:插入不可见RTL控制字符强制适配

如果不想手动调换占位符顺序,可以在字符串开头加入右到左标记(RLM,Unicode编码为\u200F),系统检测到该控制字符后会自动按RTL规则调整文本顺序,哪怕字符串中没有阿拉伯字符也能正确适配:

<string name="substring_two_substrings_dash">\u200F%1$s - %2$s</string>

\u200F是不可见控制字符,不会在界面显示,也不会影响字符串格式化逻辑,效果和手动添加阿拉伯字符一致但不会产生多余显示内容。

内容的提问来源于stack exchange,提问作者Flyview

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:15:08