Java 用 space 填充字符串

Java pad string with space

我正在尝试向字符串添加填充,但我不知道如何执行此操作。我的目标是拥有如下所示的内容:

Home: email@gmail.com (7 spaces after the colon)

上面有 "Home:" 硬编码,应该有 7 个空格和一个电子邮件变量。这是我目前所拥有的:

return String.format("Home:%7s", email);

我的理解是 %7s 是添加值为 7 的左填充,然后我有 s 作为我想在填充后包含的字符串。有人可以帮助纠正我吗?

看起来是这样的:

Home:email@gmail.com

所以发生的事情是当我遇到这样的事情时,一切看起来都很好:

return String.format("Home:%7s", "email");

第二次我添加我的变量而不是硬编码“电子邮件”,我完全失去了填充。

希望这可能有所帮助

    String email = "abc@jhkj.com";
    System.out.println(String.format("Home:%1s%s%s", "", email));

输出: Home: abc@jhkj.com

您的 模板 由 format-literal 表示似乎有效。见 demo on IDEone:

String expected = "Home: email@gmail.com"; // (7 spaces after the colon)
String email = "email@gmail.com";
assert expected == String.format("Home:%7s", email);

使用变量&插入一个space

注意 email 变量是如何作为 参数 传递给 format 方法以将其合并到 模板 .

要在冒号之后和填充之前插入 space,只需将其添加到 模板 中,如下所示:String.format("Home: %7s", email)

间距

评论

// (7 spaces after the colon)

可以通过填充来实现:将一个空字符串""填充为7,格式为%7s。结果总是 7 spaces。这样就可以通过插入一个常量直接注入 7 spaces static final String SPACES_7 = " "; 在冒号之后,例如: String ouput = "Home:" + SPACES_7 + email; 但是没有填充效果。

这称为间距。在元素之间添加 space。这里的有效输出总是 5+7 长加上可变的电子邮件长度。 label "Home:" 和 value email.

之间的间距为 7

填充

如果将 15 个字符的 字符串 填充到 7 个字符,则效果将是 无填充 ,因为 string 已经比给定的 padding-size 长。

在你的问题中你想要

have the s [placeholder] for the string I want to include after the padding

⚠️ Padding 不是(添加)在 string!

之前或之后

Padding expands output-space for the string to guarantee minimum width (与截断相反 = 最大宽度)。 它通过用 pad-char 填充 space (左或右)来实现。 padding的目的通常是对齐(左,右,居中)。

在您的电子邮件用例中,这将添加字符(此处:space)以获得固定大小的输出并对齐电子邮件地址,因此它们排成一行- 当多行垂直堆叠时向上。

要实现有效的填充,您应该选择大于或等于字符串的填充大小。否则,较长的字符串可能会超出填充大小(这不是填充的目的)。

请参阅 demo on IDEone,当电子邮件长度为 15 时,它将在左侧添加 5 spaces 以实现固定大小的输出,或右对齐,或仅填充 20。

另见