Java String.Format 规格
Java String.Format Specifications
我搜索了一段时间 google。它导致了这里和其他地方的一些文章。
我正在寻找使用字符串格式引擎(或应该调用 w.e - 如果您知道请给我正确的术语)来获取输入字符串的结尾而不是字符串的开头..
示例:
System.out.printf("[%tY/%<tm/%<td-%<tH.%<tM.%<tS][%-20.20s] %s%n", new Date(), "long.string.class.test.TestClass", "Content Test...");
输出:
[2017/12/05-21.49.11]"[long.string.class.te] Content Test...
而我想要:
[2017/12/05-21.49.11]"[class.test.TestClass] Content Test...
此外,我很好奇如果字符串超过 20 个字符的限制,是否也可以用 '...' 替换前 3 个字符..
您不能仅在格式字符串中执行此操作,您必须传递要打印的文本。这并不难...
String[] data = { "a short string", "a very long string to see that we get only the last 20 characters" };
for (String s : data)
{
System.out.println("....:....|....:....|");
System.out.printf("%20s\n",s.substring(Math.max(0, s.length()-20)));
}
如果不需要固定长度,请调整为 %s
,如果需要,请调整为 %-20s
左对齐。
输出:
....:....|....:....|
a short string
....:....|....:....|
e last 20 characters
我搜索了一段时间 google。它导致了这里和其他地方的一些文章。 我正在寻找使用字符串格式引擎(或应该调用 w.e - 如果您知道请给我正确的术语)来获取输入字符串的结尾而不是字符串的开头..
示例:
System.out.printf("[%tY/%<tm/%<td-%<tH.%<tM.%<tS][%-20.20s] %s%n", new Date(), "long.string.class.test.TestClass", "Content Test...");
输出:
[2017/12/05-21.49.11]"[long.string.class.te] Content Test...
而我想要:
[2017/12/05-21.49.11]"[class.test.TestClass] Content Test...
此外,我很好奇如果字符串超过 20 个字符的限制,是否也可以用 '...' 替换前 3 个字符..
您不能仅在格式字符串中执行此操作,您必须传递要打印的文本。这并不难...
String[] data = { "a short string", "a very long string to see that we get only the last 20 characters" };
for (String s : data)
{
System.out.println("....:....|....:....|");
System.out.printf("%20s\n",s.substring(Math.max(0, s.length()-20)));
}
如果不需要固定长度,请调整为 %s
,如果需要,请调整为 %-20s
左对齐。
输出:
....:....|....:....|
a short string
....:....|....:....|
e last 20 characters