Проблема, с которой я сталкиваюсь, заключается в том, что в String.format сообщение во время выполнения имеет символ процента, а затем выдает ошибку.
Например, в groovy:
def q = "What are your %age?"
def percent = 91
println formatMessage("Question: ${q} \n Answer: %d", percent)
String formatMessage(String message, Object... messageParams) {
return String.format(message, messageParams)
}
Теперь при вызове formatMessage, если аргумент сообщения подготавливается во время выполнения из интерполяции строки из переменной, имеющей допустимый символ%, это приводит к UnknownFormatConversionException
Теперь, когда метод formatMessage вызывается в нескольких местах, мы не хотим, чтобы вызывающая сторона очищала сообщение перед его вызовом.
Есть ли способ идентифицировать и экранировать% в методе formatMessage перед вызовом String.format?