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。
另见
我正在尝试向字符串添加填充,但我不知道如何执行此操作。我的目标是拥有如下所示的内容:
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
.
填充
如果将 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。