String.format()是大写参数

时间:2013-07-25 19:43:18

标签: java string-formatting

我有一个字符串格式字符串:

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);

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

2 个答案:

答案 0 :(得分:12)

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

来自the javadoc

  

下表总结了支持的转化次数。转换   由大写字母表示(即'B','H','S','C','X','E',   'G','A'和'T')与相应的相同   小写转换字符,但转换结果除外   根据现行区域规则的大写。该   结果相当于以下的调用   String.toUpperCase()

答案 1 :(得分:8)

在您的格式字符串中,您有一个%S,它应该是%s。我目前尚未找到有关此行为的任何文档,但所有字符串选择器(%s%f等)都应为小写。

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