Java String.Format规范

时间:2017-12-06 03:04:57

标签: java printf string.format

我花了一段时间搜索谷歌。它导致了一些来自这里和其他地方的文章。 我正在寻找使用字符串格式引擎(或者它应该被调用 - 如果你知道的话请给我正确的术语)来获得输入字符串的结尾而不是字符串的开头..

示例:

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个字符,我很好奇。

1 个答案:

答案 0 :(得分:1)

您无法仅在格式字符串中执行此操作,您必须传递要打印的文本。那不是很难......

    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