将字符串格式化为包含单词/数字的字符串

时间:2017-06-05 19:32:56

标签: java string

所以我试图创建返回String的函数。字符串以输入的单词开头,然后是一定数量的空格,然后是数字。空格的数量根据单词的长度而变化。这个想法是,当多次调用该方法时,所有单词和数字都应该排成一行。我有一张图片,说明我希望如何格式化String。

Format Example

这是我目前拥有的功能。当我在函数中键入几个随机单词和数字并每次使用printLn语句时,该函数正常工作并按照我希望的格式打印(或如上例所示)

public String formatList(String x, int y){
    String z = x;
    int stringLength=x.length();
    int i=0;
    while(i<(30-stringLength)){
     z+=" ";
     i++;
    }
    z+=String.valueOf(y);
    return z;
}

然而,当我有一个for循环时输入一个单词和数字列表,并将其添加到标题为wordList的JTextArea中,我得到以下内容(请注意,wordDistribution是我定义的一个对象,实际上是一个映射条目的ArrayList和getDistribution是一个返回此ArrayList的函数) :

String x="";

for(int i=0; i<wordDistribution.getDistribution().size();i++){
        String word = wordDistribution.getDistribution().get(i).getKey();
        int count = wordDistribution.getDistribution().get(i).getValue();
        x+=formatList(word,count)+"\n";
    }
    wordList.setText(x);

Resulting format

1 个答案:

答案 0 :(得分:3)

使用String.format(),例如

StringBuilder buf = new StringBuilder();
buf.append(String.format("%-20s%4d%n", "Foo", 42));
buf.append(String.format("%-20s%4d%n", "Hello World", 11));
buf.append(String.format("%-20s%4d%n", "This is Great", 999));
System.out.print(buf);

输出

Foo                   42
Hello World           11
This is Great        999