Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java格式数组(使用格式化程序类)_Java_String_Format - Fatal编程技术网

Java格式数组(使用格式化程序类)

Java格式数组(使用格式化程序类),java,string,format,Java,String,Format,我们的方法如下所示: public String getCommandString(Object...args) { return this.code + " " + String.format(this.pattern, args); } // cmd.code = 20 // cmd.pattern = "%1$s = %2$d" String str = cmd.getCommandString("foo", 3); // -> "20 foo = 3" 其中this

我们的方法如下所示:

public String getCommandString(Object...args) {
    return this.code + " " + String.format(this.pattern, args);
}
// cmd.code = 20
// cmd.pattern = "%1$s = %2$d"
String str = cmd.getCommandString("foo", 3);   // -> "20 foo = 3"
其中
this.code:int
this.pattern:String

此方法通常如下所示:

public String getCommandString(Object...args) {
    return this.code + " " + String.format(this.pattern, args);
}
// cmd.code = 20
// cmd.pattern = "%1$s = %2$d"
String str = cmd.getCommandString("foo", 3);   // -> "20 foo = 3"
和其他字符串模式(这是一个非常简单的基于文本的服务器客户端程序)

现在,模式是否可以考虑数量可变的参数,例如

// cmd.code = 20
// cmd.pattern = ???
String s1 = cmd.getCommandString("a", "b", "c");               // -> 20 a b c
String s2 = cmd.getCommandString("Hello", "world");            // -> 20 Hello world
String s3 = cmd.getCommandString("1", "2, "3", "4", "5", "6"); // -> 20 1 2 3 4 5 6

假设每个参数都是相同的类型(字符串)?还是必须重写该方法并手动格式化字符串?更具体地说,我正在寻找一种通用的字符串模式来格式化(相同类型)数量可变的参数。我记得在C语言中做过这样的事情,但在Java中这可能吗?

如果我理解正确的话,您所要求的功能是不存在的。下面是
格式化程序
类的javadoc部分:

格式说明符可以通过三种方式引用参数:

当格式说明符包含参数索引时,使用显式索引。参数索引是一个十进制整数,指示参数在参数列表中的位置。第一个参数被“1$”引用,第二个参数被“2$”引用,等等。一个参数可以被引用多次。例如:

格式化程序.format(“%4$s%3$s%2$s%1$s%4$s%3$s%2$s%1$s”, “a”、“b”、“c”、“d”) //->“d c b a d c b a”

当格式说明符包含“时使用相对索引使用此

public String getCommandString(Object...args) {
    // Want to have a "-" if args are not given
    return this.code + " " + args != null && args.length > 0
            ? Arrays.stream(args).map(o -> o.toString()).collect(Collectors.joining(" + ")) : "-";
}

我不明白。你不能把所有的东西连接起来吗?(如果您有一个模式,只需在模式中运行每个字符串并连接结果)是的,对于引用的特定示例,调用
StringUtils.join(args'),
是一种方法,但我认为OP只是将其作为一个示例。)我知道有第三方类可以操纵对象(如
StringUtils
),但如果可以的话,通常会先使用
java.
包。我希望有一些漂亮的未记录的技巧,但这似乎不起作用。那我就用其他方法来应付了。