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当您在正则表达式中有重复模式时,代码可能对其他人有用。