我正是这样做的:
int level = ...;//some value from game
Analytics.newDesignEvent(String.format("level_end:%02d:win", level));
我发现有些设备发送带有unicode符号的字符串,例如“01”:
level_end:01:赢
我试图在我的环境中重现它,但是String.format可以使用任何整数值。 可能这是由特定的语言环境引起的?为什么会发生这种情况呢?
Updt2: 我没有找到任何关于string + int / float / etc的信息。 concantenation也考虑到locale。 smbd碰巧知道吗?
答案 0 :(得分:2)
在java文档中说:
号码本地化。某些转换使用本地化的十进制数字 而不是通常的ASCII数字。所以使用%d格式化123将会 在英语语言环境中给出123,但在适当的阿拉伯语语言环境中给出123 例。对十进制整数进行此数字本地化 转换%d,浮点转换%e,%f和%g,以及所有 日期/时间%t或%T转化,但没有其他转化。
Btw 01表示阿拉伯数字为01。所以我将把我的电话换成
String.format(Locale.US, "level_end:%02d:win", level)
并且会看到它有帮助。