之所以写这篇文章,
多语言规范
https://vip.kingdee.com/article/241181198498975488?productLineId=29&isKnowledge=2
是发现 这篇文章的里面描述是存在些需要优化的地方。
具体需要优化的地方,在处理词条拼接处理,是不需要再多加一个String.format( 的处理,是可以使用ResManager.loadKDString(的处理直接完成的。
先说结论:可以有2种方式进行拼接
直接上测试截图:
如图中的代码:
String String_format = ResManager.loadKDString("这是一首%s小%2$s", "resourceID","systemType","简单的", "情歌"); String MessageFormat_format = ResManager.loadKDString("这是一首{0}小{1}", "resourceID","systemType","简单的", "情歌");
都是可以做到,对字符串进行拼接格式化。
分别可以有2种占位符替换的方式:
方式一:%s,%2$s的
方式二:{0} ,{1} 方式的
原理:我们通过跟踪代码可以发现,位于“kd.bos.bundle.Resources#format”的代码
s.contains("%s") ? String.format(s, args) : MessageFormat.format(s, args);
当包含 %s 就是用的 String.format(s, args)进行替换,否则就是用的MessageFormat.format(s, args)进行替换。
本质就是用的 String.format()及MessageFormat.format()进行的占位符替换的方式,
其实还可以支持更多种的占位符的替换方式,更多方式具体格式可参考如下参考的连接
jsva基础---String.format()与MessageFormat.format()
https://blog.csdn.net/chihaihai/article/details/105172142
MessageFormat和String类中的format使用
https://blog.csdn.net/yunxing323/article/details/111825259
the end。
推荐阅读