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.
包。我希望有一些漂亮的未记录的技巧,但这似乎不起作用。那我就用其他方法来应付了。