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