带空格的Java填充字符串

带空格的Java填充字符串,java,string-formatting,padding,Java,String Formatting,Padding,我正在尝试向字符串添加填充,但是我不知道如何执行此操作。我的目标是拥有这样的东西: Home:email@gmail.com 主页:email@gmail.com(冒号后7个空格) 上面有“Home:”硬编码,应该有7个空格和一个电子邮件变量。以下是我到目前为止的情况: return String.format("Home:%7s", email); 我的理解是,%7s是添加值为7的左填充,然后我有s作为填充后要包含的字符串。有人能帮我纠正一下吗 它看起来是这样的: Ho

我正在尝试向字符串添加填充,但是我不知道如何执行此操作。我的目标是拥有这样的东西:

Home:email@gmail.com
主页:email@gmail.com(冒号后7个空格)

上面有
“Home:”
硬编码,应该有7个空格和一个电子邮件变量。以下是我到目前为止的情况:

return String.format("Home:%7s", email);
我的理解是,
%7s
是添加值为7的左填充,然后我有
s
作为填充后要包含的字符串。有人能帮我纠正一下吗

它看起来是这样的:

Home:email@gmail.com
所以当我有这样的东西时,一切看起来都很好:

return String.format("Home:%7s", "email");
第二次我添加变量而不是硬编码“email”,我就完全失去了填充。

希望这会有所帮助

    String email = "abc@jhkj.com";
    System.out.println(String.format("Home:%1$3s%s%s", "", email));
输出:
主页:abc@jhkj.com

用文本格式表示的模板似乎有效。见:

String expected=“Home:email@gmail.com"; // (冒号后7个空格)
字符串电子邮件=”email@gmail.com";
assert expected==String.format(“主页:%7s”,电子邮件);
变量的使用&插入空格 注意
email
变量是如何作为参数传递给
format
方法以将其合并到模板中的

要在冒号之后和填充之前插入一个空格,只需将其添加到模板中,如下所示:
String.format(“主页:%7s”,电子邮件)

间距 评论

//(冒号后7个空格)

可以通过填充来实现:将空字符串
填充为7,格式为
%7s
。结果总是7个空格。因此,可以通过插入常量直接注入7个空格
static final String SPACES_7=”“
在冒号之后,例如:
String output=“Home:”+SPACES\u 7+电子邮件
但是没有填充效果

这称为间距。在元素之间添加空间。这里的有效输出总是5+7长加上可变电子邮件长度。标签“主页:”和值
email
之间的间距为7

衬垫 如果将15个字符的字符串填充到7个字符,则效果将是不填充,因为该字符串已经超过给定的填充大小

在你的问题中,你想

在填充后为要包含的字符串设置
s
[placeholder]

⚠️ 填充不会(添加)在字符串之前或之后

扩展字符串的输出空间以保证最小宽度(与截断相反=最大宽度)。 它通过用pad char填充空间(左或右)来实现。 填充的目的通常是对齐(左、右、中)

在您的电子邮件用例中,这将添加字符(此处:空格)以具有固定大小的输出,并对齐电子邮件地址,以便在垂直堆叠多行时它们对齐

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

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

另见
  • 格式化程序字符串:

希望这会有帮助::你应该自己研究:在网上搜索
java pad string
会得到像Baeldung.com这样的教程,但我无法理解,因此,我在这里发布了一个我尝试过的示例,并要求澄清。您是否阅读了类
java.lang.String
中方法的javadoc?它包含一个非常详细的语法解释。@hc\u dev我更新了上面的问题。我不知道如何在填充之前使用字符串,以及如何替换字符串变量来显示电子邮件。这确实有帮助。是的,我很感激。我只是认为我需要“%7s”来表示所需的间距?您的格式文本(模板)实际上添加了3个空格,如
String.format(“%3s”),“”
。我认为我们应该通过填充来澄清我们所理解的内容。这只是一个术语,我同意u@hc_dev,但在这里,我们应该理解用户的期望,而不是关注他们使用了哪些术语。@Its Andrew u可以在发送邮件之前使用边距来定义额外的空间。@Koushlendra正是我们使用术语的方式(开发人员)用代码交流。同意:关注用户的期望!此外:首先与他们澄清,然后解释和(重新)指导他们,就像“你要求的是
边距
而不是
填充
。想象一下其他人寻求帮助,发现这个问题“带空格的Java填充字符串”回答:“通过添加3个空格使用固定边距”
”.那么他们对java字符串填充了解到了什么?