在Scala中使用String.format时出错-java.util.MissingFormatArgumentException:格式说明符“%s”
我正在尝试使用String.format替换Scala中的子字符串。我在数组[字符串]中有子字符串值 代码如下:在Scala中使用String.format时出错-java.util.MissingFormatArgumentException:格式说明符“%s”,scala,split,Scala,Split,我正在尝试使用String.format替换Scala中的子字符串。我在数组[字符串]中有子字符串值 代码如下: val Input_Query = "select * from table where arg_1 = %s and arg_2 = %s" val str1 = "2019_09" val dbpairs = str1.split("_") val query = Input_Query.format(dbpai
val Input_Query = "select * from table where arg_1 = %s and arg_2 = %s"
val str1 = "2019_09"
val dbpairs = str1.split("_")
val query = Input_Query.format(dbpairs)
预期产出:
从arg_1=2019和arg_2=09的表格中选择*
错误:
java.util.MissingFormatArgumentException:格式说明符“%s”
位于java.util.Formatter.Formatter.java:2519
位于java.util.Formatter.Formatter.java:2455
您的问题是试图将数组参数传递给varargs方法格式 问题在于: val query=Input_query.formatdbpairs 格式签名为: def formatargs:Any*:字符串 Any*表示它接受任何类型的一个或多个元素 您的代码应该是:
val Input_Query = "select * from table where arg_1 = %s and arg_2 = %s"
val str1 = "2010_09"
val dbpairs: Array[String] = str1.split("_")
val query = Input_Query.format(dbpairs:_*)
println(query) // select * from table where arg_1 = 2010 and arg_2 = 09
调用varargs方法时,应该使用:*语法传递它,而不仅仅是传递数组或Seq。
在您的情况下,还可以使用字符串插值
有用链接: