如何在 java 中的 %s 中用变量而不是硬编码数字填充字符串
how to string pad with variables instead of hard coded numbers inside %s in java
我正在尝试用空格向右填充一个字符串,以使不同的字符串长度在同一点对齐。我尝试使用以下内容来做到这一点。但是,我不知道如何在 %s 中使用变量 namePad,就像我们使用实数一样(例如使用 %(namePad)s 而不是 %5s)
public String toString() {
int namePad = 10-name.length();
return String.format(id + " -" + " %-5s" + "%10s" , name, "");
}
输出样本:
All customers:
1 - Bill Gates *// padding all the strings to here
2 - Trump *
3 - Tali *
4 - James Bond *
您可以使用 "%-"+namePad+"s"
而不是 "%-5s"
尽管如此,我不确定您是否真的需要该变量。您正在使用 String.format
,但未提供任何格式变量,因此请改用此方法。
String.format("%d - %-21s", id, name);
或者,和以前一样
int pad = 21;
return String.format("%d - %-"+pad+"s*", id, name);
例如,(添加 *
以显示填充)
static class Person {
int id;
String name;
public Person(int id, String name) {
this.id = id; this.name = name;
}
public String toString() {
return String.format("%d - %-21s*", id, name);
}
}
public static void main (String[] args) throws java.lang.Exception
{
Person[] people = {
new Person(1, "Bill Gates"),
new Person(2, "Trump"),
new Person(3, "Tail"),
new Person(4, "James Bond")
};
for (Person p : people) {
System.out.println(p);
}
}
输出
1 - Bill Gates *
2 - Trump *
3 - Tail *
4 - James Bond *
我正在尝试用空格向右填充一个字符串,以使不同的字符串长度在同一点对齐。我尝试使用以下内容来做到这一点。但是,我不知道如何在 %s 中使用变量 namePad,就像我们使用实数一样(例如使用 %(namePad)s 而不是 %5s)
public String toString() {
int namePad = 10-name.length();
return String.format(id + " -" + " %-5s" + "%10s" , name, "");
}
输出样本:
All customers:
1 - Bill Gates *// padding all the strings to here
2 - Trump *
3 - Tali *
4 - James Bond *
您可以使用 "%-"+namePad+"s"
而不是 "%-5s"
尽管如此,我不确定您是否真的需要该变量。您正在使用 String.format
,但未提供任何格式变量,因此请改用此方法。
String.format("%d - %-21s", id, name);
或者,和以前一样
int pad = 21;
return String.format("%d - %-"+pad+"s*", id, name);
例如,(添加 *
以显示填充)
static class Person {
int id;
String name;
public Person(int id, String name) {
this.id = id; this.name = name;
}
public String toString() {
return String.format("%d - %-21s*", id, name);
}
}
public static void main (String[] args) throws java.lang.Exception
{
Person[] people = {
new Person(1, "Bill Gates"),
new Person(2, "Trump"),
new Person(3, "Tail"),
new Person(4, "James Bond")
};
for (Person p : people) {
System.out.println(p);
}
}
输出
1 - Bill Gates *
2 - Trump *
3 - Tail *
4 - James Bond *