朋友我必须在项目中捏造某些东西,我发现了一些困难,如下:
String name1 = "Bharath" // its length should be 12
String name2 = "Raju" // its length should be 8
String name3 = "Rohan" // its length should be 9
String name4 = "Sujeeth" // its length should be 12
String name5 = "Rahul" // its length should be 11 " Means all Strings with Variable length"
我有字符串和它们的长度。我需要输出如下格式。通过使用字符串连接和填充。我需要在Groovy中回答,即使Java也很好..
"Bharath Raju Rohan Sujeeth Rahul "
意思是:
Bharath以5个黑色空格作为lenth是12(7 + 5 = 12),
Raju从4个黑色空格开始,因为lenth是8(4 + 4 = 8),
Rohan开了4个黑色空格,因为lenth是9(5 + 4),
Sujeeth向前5个黑色空格,因为lenth是12(7 + 5),
Rahul开出6个黑色空格,因为lenth是11(5 + 6),
答案 0 :(得分:8)
你可以这样做:
// A list of names
def names = [ "Bharath", "Raju", "Rohan", "Sujeeth", "Rahul" ]
// A list of column widths:
def widths = [ 12, 8, 9, 12, 11 ]
String output = [names,widths].transpose().collect { name, width ->
name.padRight( width )
}.join()
使output
等于:
'Bharath Raju Rohan Sujeeth Rahul '
假设我理解这个问题......很难确定......
答案 1 :(得分:3)
看看Apache的StringUtils。它有填充空格(左或右)的方法。
答案 2 :(得分:3)
您可以使用sprintf
,它被添加到Object类中,因此始终可用:
def s = sprintf("%-12s %-8s %-9s %-12s %-11s", name1, name2, name3, name4, name5)
assert s == "Bharath Raju Rohan Sujeeth Rahul "
与sprintf
一起使用的格式字符串与用于Formatter
类的格式字符串相同。有关详细信息,请参阅JDK documentation for the format string。
答案 3 :(得分:2)
如前所述,您可以使用String.format()方法来实现目标。
例如:
String[] strings = {
"toto1",
"toto22",
"toto333",
"toto",
"totoaa",
"totobbb",
"totocccc",
};
String marker = "01234567890|";
String output = "";
for(String s : strings) {
output += marker;
}
System.out.println(output);
output = "";
for(String s : strings) {
output += String.format("%-12s", s);
}
System.out.println(output);
这将输出第一行,其中包含12个字符的标记,然后是第2行,带有预期的字符串:
01234567890|01234567890|01234567890|01234567890|01234567890|01234567890|01234567890|
toto1 toto22 toto333 toto totoaa totobbb totocccc