Kotlin中如何检查字符串资源是否含占位符并完成替换?
处理Android字符串资源占位符替换
实现方案
Android原生的getString()方法自带占位符处理能力,无需手动判断字符串是否包含占位符,直接调用对应重载方法即可完成替换。
第一步:修正字符串资源命名
注意示例中所有字符串的name属性重复,实际开发中需给每个字符串设置唯一名称,修改后的strings.xml如下:
<!-- res/values/strings.xml --> <string name="no_placeholder">Its a poem right?</string> <string name="indexed_placeholder">We are %1$s to see the queen, are you %1$s</string> <string name="simple_placeholder">where are we %s</string>
第二步:Fragment中完成占位符替换
在Fragment内使用getString()的重载方法,传入变量going替换占位符:
// Fragment中的代码 val going = "goin" // 无占位符的字符串,直接获取 val text1 = getString(R.string.no_placeholder) // 带索引占位符的字符串,传入参数替换 val text2 = getString(R.string.indexed_placeholder, going) // 带简单占位符的字符串,同样传入参数替换 val text3 = getString(R.string.simple_placeholder, going)
关键说明
getString(int resId, Object... formatArgs)会自动识别%s、%1$s等格式占位符,按顺序用传入的参数完成替换;无占位符时直接返回原字符串。- 必须保证每个字符串资源的
name属性唯一,否则会触发编译错误。
内容的提问来源于stack exchange,提问作者Oyindamola Gideon Olarewaju
相关产品推荐
相关产品推荐

