【问题标题】:Formatting a string array in java在java中格式化字符串数组
【发布时间】:2013-08-20 12:58:18
【问题描述】:

我有一个包含 k 个元素的字符串数组。我想使用 System.out.format 将它们打印出来,但问题是我不知道 k。所以本质上,我想使用类似的东西: System.out.format("%s %s ... k times", str1, str2, ... strk); (其中 k 是一个变量)

我正在查看 java 文档,但找不到执行此操作的方法。有没有简单的出路?

谢谢!

【问题讨论】:

  • 也许Arrays.toString() 可能就是您要找的。​​span>
  • 不是真的,关键是我想为每个字符串指定我想要的字符数。类似 %15s
  • @ashu:你的解释对我来说没有多大意义。你能编辑你的帖子并给出一个示例数组+输出吗?

标签: java string printing formatting


【解决方案1】:

你可以使用

System.out.format("%s". Arrays.toString(your_array));

【讨论】:

    【解决方案2】:

    Java 8:

    String formatted = Stream.of(arrayOfStrings)
        .collect(Collectors.joining(",","[","]"));
    
    String formatted = Stream.of(arrayOfSomethingElse)
        .map(Object::toString)
        .collect(Collectors.joining(",","[","]"));
    

    【讨论】:

      【解决方案3】:

      使用循环:

      for (String s : array) {
          System.out.print(String.format("%s ", s));
      }
      System.out.println();
      

      【讨论】:

        【解决方案4】:
        for(int i = 0; i < array.length; i++) {
            System.out.print("%s ", array[i]);
        }
        

        【讨论】:

        • 你会说array[i]。我还建议使用array.length 而不是k
        • 我太快了,感谢您指出这一点。
        【解决方案5】:

        试试:

        StringBuilder sb = new StringBuilder();
        for(String s : myArray){
            sb.append(s).append(" ");
        }
        sb.append(myArray.length).append(" times");
        System.out.println(sb.toString());              // print the string 
        

        【讨论】:

          【解决方案6】:

          您只是想用每个字符串之间的空格连接 k 个字符串吗?你不需要System.out.format。您可以简单地创建一个循环将它们与StringBuilder 连接在一起:

          public String concatStrings(String... s) {
              StringBuilder sb = new StringBuilder();
              if (s.length > 0) {
                  sb.append(s[0]);
                  for (int i = 1; i < s.length; i++) {
                      sb.append(' ').append(s[i]);
                  }
              }
          
              return sb.toString();
          }
          

          【讨论】:

            【解决方案7】:

            我想为每个字符串指定我想要的字符数。类似 %15s

            这只会为每个String 指定填充。如果String 长度小于格式说明符中指定的值,则使用完整的String。你可以使用substring

            void displayArray(String[] str, int characters) {
                for (String s: str) {
                    System.out.print(s.substring(0, Math.min(s.length(), characters)) + " ");
                }
                System.out.println();
            }
            

            【讨论】:

              【解决方案8】:

              这是典型的工具箱代码 - 您经常使用和重用的代码,最好保留在静态访问实用程序类中(例如 StringUtil)。这是一个适用于各种非原始数组的通用函数,可让您指定分隔符(空格、逗号、斜杠等):

              public static <T> void print (PrintStream out, String separator, T... elements) {
                      for (int i = 0; i < elements.length; i++) {
                          if (i > 0) {
                              out.print(separator);
                          }
                          out.print(elements[i]);
                      }
                  }
              

              示例用法:

              String[] s = {"A", "B", "C", "D", "E"};
              Integer[] n = {1, 2, 3, 4, 5}; //non-primitive
              print(System.out, " ", s);
              print(System.out, ", ", n);
              

              【讨论】:

                猜你喜欢
                • 2010-12-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-08-27
                • 2017-10-27
                • 2011-09-19
                相关资源
                最近更新 更多