Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 为什么我会得到以下String.format()代码的UnknownFormatConversionException?_Java_String_Formatter - Fatal编程技术网

Java 为什么我会得到以下String.format()代码的UnknownFormatConversionException?

Java 为什么我会得到以下String.format()代码的UnknownFormatConversionException?,java,string,formatter,Java,String,Formatter,我试图组合一个正则表达式,它可以通过字符串格式选项使用重复模式 String non_dot = "[^\\.]"; String dot = "\\."; String sfp1 = "%1$s*?%2$s"; String sf = sfp1 + sfp1 + sfp1 + sfp1.substring(0,3) + "*"; System.out.println(sf); String regex = String.format(sf, non_dot, dot

我试图组合一个正则表达式,它可以通过字符串格式选项使用重复模式

String non_dot = "[^\\.]";
String dot     = "\\.";
String sfp1    = "%1$s*?%2$s";
String sf      = sfp1 + sfp1 + sfp1 + sfp1.substring(0,3) + "*";
System.out.println(sf);
String regex   = String.format(sf, non_dot, dot);
System.out.println(regex);
打印
sf
的输出如下:

%1$s*?%2$s%1$s*?%2$s%1$s*?%2$s%1$*
但是,在计算
String.format(…)
时,对于
regex
变量的派生,我的代码会使用以下命令:

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '1'
    at java.util.Formatter.checkText(Formatter.java:2547)
    at java.util.Formatter.parse(Formatter.java:2533)
    at java.util.Formatter.format(Formatter.java:2469)
    at java.util.Formatter.format(Formatter.java:2423)
    at java.lang.String.format(String.java:2792)
    at Solution.main(Solution.java:23)
我一直在使用这些资源

根据这一点,它应该是有效的


有人能发现我为什么会出现这个错误吗?

正如@JB Nizet的评论所说:您的子字符串结束绑定是错误的,因此您的格式字符串中有
%1$*
,这不是什么(在
$
之后缺少一个
s
)。

我想您想要
sfp1.substring(0,4)
,不
sfp1。子字符串(0,3)
。投票作为typo@LinosaysReinstateMonica当您在正则表达式中有重复模式时,代码可能对其他人有用。