使用java中的选项卡格式化字符串和字符串数组

时间:2014-06-06 21:55:48

标签: java arrays string tabs string.format

我有一个赋值,我应该有一个格式化String对象数组的方法,用一个标题以某种方式制表,并将所有对象(格式化之后)很好地放入一个单个String表示要返回的方法。此方法位于对象类中,因此它最终将以相同的方式格式化多个对象,因此我需要使用相同的方式格式化各种String长度。

这就是我需要输出的样子:

      Hashtags:
                #firstHashtag
                #secondHashtag

每个主题标签位于String[]个标签栏中,

即。 String[] hashtags = ["#firstHashtag", "#secondHashtag"]

所以基本上我需要使用string.format()在包含选项卡式“Hashtags:”标题的单个字符串上创建,然后将“hashtags”数组中的每个String放在一个新行上,并使用双标签。 “hashtag”数组的大小会发生变化,因为它位于对象类中。

有人可以帮我使用String.formatter吗?

这是我的方法到目前为止的样子:

public String getHashtags()
     {
          String returnString = "Hashtags:";
          String add;
          int count = 0;

          while(count < hashtags.length)
          {
               //hashtags is an array of String objects with an unknown size

               returnString += "\n";
               add = String.format("%-25s", hashtags[count]);

               //here I'm trying to use .format, but it doesn't tabulate, and I 
               //don't understand how to make it tabulate!!
               count++;
               returnString = returnString + add;
          }

          if(hashtags == null)
          {
               returnString = null;
          }

          return returnString;

     }

有关格式化操作的任何有用建议都将非常感谢!!!

2 个答案:

答案 0 :(得分:0)

您的String.format()语句将创建一个左对齐并填充为25个空格的String。例如,这一行:

System.out.println("left-justified  >" + String.format("%-25s", "hello") + "<");

输出:

left-justified  >hello                    <

另一件事是你并没有真正使用标签(我没有看到程序中的标签字符)。 String.format()创建长度为25且左对齐的字符串。在创建返回字符串时请记住这一点。此外,您的循环每次添加一个换行符。这就是你获得多行输出的原因。

答案 1 :(得分:0)

如果您尝试使用真正的标签而不是空格,那么只需将您的程序更改为如下:

public String getHashtags()
 {
      if(hashtags == null)
      {
           return null;
      }

      String returnString = "Hashtags:";
      int count = 0;

      while(count < hashtags.length)
      {
           //hashtags is an array of String objects with an unknown size

           returnString = returnString + "\n\t\t"+hashtags[count];
           count++;
      }

      return returnString;

 }