Как использовать строку.формат в groovy?


Приведенный ниже код выводит переменную response, перед которой стоят пробелы.

Число пробелов, которые должны быть напечатаны перед переменной response, эквивалентно разности itemNumber и examineeResponses.

Теперь, можно ли заполнить строку нулем ("0") вместо пробелов, используя строку.формат?

def converted = examineeResponses+String.format("%${itemNumber - 1}s", response)

Пример использования вышеуказанных кодов:

examineeResponses = '1' // String
itemNumber = 10 //int
response = '3' // String

Вывод:

"        3"

Желаемый результат:

"000000003"
2 2

2 ответа:

Я верю, что вы можете это сделать, но немного трудно понять ваш вопрос:

int itemNumber = 10
String examineeResponses = '1'
char response = '3'

"$response".padLeft( itemNumber - examineeResponses.length(), '0' )

Хотя я подозреваю (вы не говорите), что вы просто хотите, чтобы он был напечатан itemNumbers символов в ширину. Если это так, вам просто нужно:

"$response".padLeft( itemNumber, '0' )

И вам совсем не нужно examineeResponses.

Один из битов, с которым я борюсь в вашем вопросе, заключается в том, что я не знаю, что examineeResponses.length() должен делать (кроме как выбрасывать ошибку). Другой - я не уверен, что это то, что вы хотите сделать ; -)

Вы не можете обнулить pad Strings with String.format в Java или Groovy, вы можете только нуль pad numerics

Попробуйте что-нибудь вроде этого:

def formattedString = "blahblah.com?param=${param}&hash=${hash}"