Groovy String для int - PullRequest
       35

Groovy String для int

250 голосов
/ 11 ноября 2009

У меня есть String, представляющее целочисленное значение, и я хочу преобразовать его в int Есть ли отличный эквивалент Java Integer.parseInt(String)?

Ответы [ 13 ]

440 голосов
/ 11 ноября 2009

Используйте метод 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, он возвращает ноль, а не вызывает исключение.

Обновление устаревших версий

В последних версиях 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
63 голосов
/ 11 ноября 2009

Несколько способов сделать это, этот мой любимый:

def number = '123' as int
29 голосов
/ 12 ноября 2009

В качестве дополнения к ответу Дона , Groovy не только добавляет .toInteger() метод к String с, но также добавляет toBigDecimal(), toBigInteger(), toBoolean(), toCharacter() , toDouble(), toFloat(), toList() и toLong().

В том же духе groovy также добавляет is* эквивалентов ко всем тем, которые возвращают true, если рассматриваемый String может быть проанализирован в рассматриваемом формате.

Соответствующая страница GDK находится здесь.

24 голосов
/ 02 июня 2013

Я не уверен, был ли он введен в последних версиях groovy (первоначальный ответ довольно старый), но теперь вы можете использовать:

def num = mystring?.isInteger() ? mystring.toFloat() : null

или

def num = mystring?.isFloat() ? mystring.toFloat() : null

Я рекомендую использовать числа с плавающей точкой или даже двойные вместо целых в случае, если указанная строка ненадежна.

15 голосов
/ 11 ноября 2009

Ну, Groovy прекрасно принимает форму Java. Если вы спрашиваете, существует ли способ Groovier , есть способ перейти к Integer.

Здесь показаны оба:

String s = "99"
assert 99 == Integer.parseInt(s)
Integer i = s as Integer
assert 99 == i
6 голосов
/ 12 марта 2015

также вы можете сделать статический импорт

import static java.lang.Integer.parseInt as asInteger

и после этого использования

String s = "99"
asInteger(s)
3 голосов
/ 05 октября 2015

toInteger() метод доступен в Groovy, вы можете использовать его.

2 голосов
/ 24 февраля 2017

Несколько способов добиться этого. Примеры как ниже

a. return "22".toInteger()
b. if("22".isInteger()) return "22".toInteger()
c. return "22" as Integer()
d. return Integer.parseInt("22")

Надеюсь, это поможет

1 голос
/ 17 сентября 2018
def str = "32"

int num = str as Integer
1 голос
/ 21 мая 2016

Преобразование Groovy Style:

Integer num = '589' as Integer

Если у вас есть параметр запроса:

Integer age = params.int('age')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...