2012-10-05 3 views
2

Приведенный ниже код печатает переменную response, которой предшествуют пробелы.Как использовать String.format в groovy?

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

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

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

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

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

Выход:

"  3" 

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

"000000003" 

ответ

8

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

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

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

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

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

И вам не нужно examineeResponses вообще.

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

Вы можете не нулевой колодки Строки с String.format в Java или Groovy, вы можете только нулевой колодки Числовые

+0

exameResponses.length() относится к длине переменной ответа. это целое число. – chemilleX3

+0

'Integer.length()' не является методом. Что вы подразумеваете под длиной? –

+0

Вы имеете в виду длину строки, если вам нужно преобразовать целое число в строку? Например: '' $ {14} ". Length() == 2'? –

-1

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

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

Это не отвечает на вопрос. – doelleri

+0

Это то, что я искал. –