是否有格式化标志在Java中转换为小写字符串?

Jam*_*unn 28 java string-formatting

Java中有两个占位符转换为String:

  • %s - 按原样转换为String
  • %S - 转换为大写字符串.

因此,给出:

String result = String.format(template, "Hi James!");
Run Code Online (Sandbox Code Playgroud)
  • 如果是template = "%s",结果将是"Hi James!"
  • 如果是template = "%S",结果将是 "HI JAMES!"

题:

通常,有没有办法只使用Java的格式转换语法将参数转换为小写字符串?(换句话说,在不使用toLowerCase().)
具体地说,是有任何可能的值template,使得其结果将是"hi james!"

Chr*_*ian 20

不,那里没有.但是,据Java Docs说:

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

换句话说,以下

String result = String.format("%S", "Hi James!");
Run Code Online (Sandbox Code Playgroud)

相当于

String result = String.format("%s", "Hi James!").toUpperCase();
Run Code Online (Sandbox Code Playgroud)

所以,如果你想得到一个小写字符串,你可以这样做:

String result = String.format("%s", "Hi James!").toLowerCase();
Run Code Online (Sandbox Code Playgroud)

使用标志进行转换不会进行优化.

  • 可能更有用:`String.format("%s","嗨詹姆斯!".toLowerCase())` - 因为如果你的格式是例如""消息是:%s"`你可能不想小写整个事情. (3认同)
  • 只有第一句话是有用的(“没有没有”)。其余的只是解释这个问题并提出@James 想要避免的内容。 (2认同)