Почему я получаю UnknownFormatConversionException для следующего кода String.format ()? - PullRequest
1 голос
/ 05 января 2020

Я пытался собрать выражение регулярного выражения, которое могло бы использовать повторяющиеся шаблоны с помощью параметра формата String.

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)

Я использовал эти ресурсы.

В соответствии с этим оно должно работать!

Может кто-нибудь определить, почему я получаю эту ошибку?

1 Ответ

2 голосов
/ 05 января 2020

Как сказано в комментарии @JB Низета: ваша конечная граница подстроки неверна, и в результате у вас есть %1$* в строке формата, что не является чем-то (пропускается s после $) .

...