在java中格式化字符串数组

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18335701/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 00:38:47  来源:igfitidea点击:

Formatting a string array in java

javastringprintingformatting

提问by ashu

I have a string array which has k elements. I want to print them out using System.out.format, but the issue is that I do not know k. So essentially, I want to use something like: System.out.format("%s %s ... k times", str1, str2, ... strk);(where k is a variable)

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

I was looking through the java documentation, but could not find a way to do this. Is there a simple way out?

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

Thanks!

谢谢!

采纳答案by duffymo

Use a loop:

使用循环:

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

回答by Tricky12

for(int i = 0; i < array.length; i++) {
    System.out.print("%s ", array[i]);
}

回答by Jean Logeart

Try:

尝试:

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 

回答by Ruchira Gayan Ranaweera

you can use

您可以使用

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

回答by Jesper

Do you simply want to concatenate kstrings with a space between each of the strings? You don't need System.out.formatfor that. You could simply create a loop to concatenate them together with a StringBuilder:

您是否只是想将k 个字符串与每个字符串之间的空格连接起来?你不需要System.out.format那个。您可以简单地创建一个循环将它们与 a 连接在一起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();
}

回答by Reimeus

I want to specify the number of characters that I want for each string. Something like %15s

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

That will only specify the padding for each String. If the Stringlength is less than the value specified in the format specifier, then the full Stringis used. You could use substring

那只会指定每个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();
}

回答by Peter Walser

That's typical toolbox code- code you often use and reuse, and best keep in a static-access utility class (such as StringUtil). Here's a generic function that works on all kinds of non-primitive arrays, and lets you specify the separator (space, comma, slash, whatever):

这是典型的工具箱代码- 您经常使用和重用的代码,最好保留在静态访问实用程序类(例如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]);
        }
    }

Example Usage:

示例用法:

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

回答by Dominic Fox

Java 8:

爪哇 8:

String formatted = Stream.of(arrayOfStrings)
    .collect(Collectors.joining(",","[","]"));

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