String.format()是大写参数

Ale*_*ier 4 java string-formatting

我有一个String格式字符串:

String.format("CREATE TABLE %s ("
    + "%S INTEGER PRIMARY KEY AUTOINCREMENT, %s INTEGER NOT NULL, %s TEXT NOT NULL)",
    SPORT_TABLE, SPORT_ID, SPORT_WSID, SPORT_TITLE);
Run Code Online (Sandbox Code Playgroud)

但我的第二个论点(SPORT_ID)正在大写.为什么会这样?我该怎么做才能解决这个问题?

Den*_*ret 12

一个完美记录的行为,即使不是一个众所周知的行为(可能因为它既不是明显的需要也不是非常有用的东西).

来自javadoc:

下表总结了支持的转换.由大写字母表示的转换(即'B','H','S','C','X','E','G','A'和'T')是相同的作为相应的小写转换字符的那些,除了根据现行语言环境的规则将结果转换为大写.结果相当于String.toUpperCase()的以下调用


Ale*_*ier 8

在你的格式字符串中,你有一个%S,它应该是一个%s.我还没有发现目前对这种行为的任何文件,但所有的字符串选择(%s,%f等等)应该是小写.

编辑:请参阅@dstroy对javadoc引文的回答.