У меня есть String, который представляет целочисленное значение и хотел бы преобразовать его в int. Существует ли groovy эквивалент Java Integer.parseInt(String)?
Groovy String to int
Ответ 1
Используйте метод toInteger() для преобразования String в Integer, например
int value = "99".toInteger()
Альтернативой, которая позволяет избежать использования устаревшего метода (см. ниже), является
int value = "66" as Integer
Если вам нужно проверить, можно ли преобразовать String перед выполнением преобразования, используйте
String number = "66"
if (number.isInteger()) {
int value = number as Integer
}
Grails
Если вы конвертируете параметр запроса в контроллер Grails, есть еще лучший способ
Integer paramValue = params.int('paramName')
Одна из приятных особенностей этого метода заключается в том, что он безопасен, то есть если параметр не может быть преобразован в Integer, он возвращает null, а не бросает исключение.
Обновление устаревших
В последних версиях Groovy один из методов toInteger() устарел. Из org.codehaus.groovy.runtime.StringGroovyMethods в Groovy 2.4.4
/**
* Parse a CharSequence into an Integer
*
* @param self a CharSequence
* @return an Integer
* @since 1.8.2
*/
public static Integer toInteger(CharSequence self) {
return Integer.valueOf(self.toString().trim());
}
/**
* @deprecated Use the CharSequence version
* @see #toInteger(CharSequence)
*/
@Deprecated
public static Integer toInteger(String self) {
return toInteger((CharSequence) self);
}
Вы можете заставить не устаревшую версию метода вызываться с помощью чего-то ужасного, например:
int num = ((CharSequence) "66").toInteger()
Лично я предпочитаю:
int num = 66 as Integer
Ответ 2
Несколько способов сделать это, этот мой любимый:
def number = '123' as int
Ответ 3
В качестве дополнения к Don answer не только groovy добавляет метод .toInteger() к String s, он также добавляет toBigDecimal(), toBigInteger(), toBoolean(), toCharacter(), toDouble(), toFloat(), toList() и toLong().
В том же ключе groovy также добавляет is* эквиваленты ко всем тем, которые возвращают true, если рассматриваемый String может быть проанализирован в соответствующем формате.
Соответствующая страница GDK находится здесь.
Ответ 4
Я не уверен, что он был представлен в последних версиях groovy (исходный ответ довольно старый), но теперь вы можете использовать:
def num = mystring?.isInteger()?mystring.toFloat():null
или
def num = mystring?.isFloat()?mystring.toFloat():null
Я рекомендую использовать поплавки или даже удваивать вместо целых чисел в случае, если предоставленная строка ненадежна.
Ответ 5
Ну, Groovy отлично принимает форму Java. Если вы спрашиваете, есть ли способ Groovier, есть способ перейти к Integer.
Оба показаны здесь:
String s = "99"
assert 99 == Integer.parseInt(s)
Integer i = s as Integer
assert 99 == i
Ответ 6
также вы можете сделать статический импорт
import static java.lang.Integer.parseInt as asInteger
и после этого используйте
String s = "99"
asInteger(s)
Ответ 7
toInteger() доступен в groovy, вы можете использовать это.
Ответ 8
Groovy Преобразование стиля:
Integer num = '589' as Integer
Если у вас есть параметр запроса:
Integer age = params.int('age')
Ответ 9
Несколько способов добиться этого. Примеры ниже
a. return "22".toInteger()
b. if("22".isInteger()) return "22".toInteger()
c. return "22" as Integer()
d. return Integer.parseInt("22")
Надеюсь, что это поможет