В программе Java я использую строку с функцией Formatter.format()
, которую я получаю с сервера. Я не могу быть уверен, что для форматирования String
имеет местозаполнитель или допустимое число из них. Если это String
не так, как ожидалось, я бы хотел исключить или зарегистрировать его как-то.Получить число заполнителей в Formatter.format() String
На данный момент я не забочусь о том, какие типы заполнителей (String
, Integer
, ...), я хотел бы просто получить количество ожидаемых параметров для каждой строки.
Что такое самый простой способ достичь этого? Один из способов - использовать регулярное выражение, но я думаю, что есть что-то более удобное - например, встроенная функция.
Вот некоторые примеры:
Example String | number of placeholders:
%d of %d | 2
This is my %s | 1
A simple content. | 0
This is 100% | 0
Hi! My name is %s and I have %d dogs and a %d cats. | 3
EDIT: Formatter.format() бросает исключение, если не обеспечены достаточным количеством параметров. Есть вероятность, что я получу строку без заполнителей. В этом случае, даже если я предоставляю параметры (будет опущен), исключение не будет выбрано (хотя я бы хотел его выбросить), только то, что будет возвращено значение String. Мне нужно сообщить об ошибке на сервер.
Каким образом это может быть "не то, что вы ожидаете?" Предположительно, вы знаете количество заполнителей, которые вы ожидаете - можете ли вы просто попробовать форматирование со значениями по умолчанию и посмотреть, не сработает ли он? –
Я не знаю о встроенной функции, но моя первая мысль - это регулярное выражение. Есть ли у вас какие-либо проблемы с использованием regex? – Hill
@ AndyTurner Я не был достаточно ясен. Я знаю, что метод format генерирует исключение, если я не предоставляю достаточно параметров. Моя проблема в том, что я хотел бы исключить исключение, даже если я предоставляю слишком много параметров, поэтому мне понадобится количество заполнителей. – urgas9