У меня есть 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")
Надеюсь, что это поможет