У меня есть, String
который представляет целочисленное значение и хотел бы преобразовать его в int
. Есть ли отличный вариант Java Integer.parseInt(String)
?
У меня есть, String
который представляет целочисленное значение и хотел бы преобразовать его в int
. Есть ли отличный вариант Java Integer.parseInt(String)
?
Ответы:
Используйте toInteger()
метод для преобразования String
в Integer
, например,
int value = "99".toInteger()
Альтернативой, которая избегает использования устаревшего метода (см. Ниже), является
int value = "66" as Integer
Если вам нужно проверить, String
можно ли конвертировать перед выполнением конвертации, используйте
String number = "66"
if (number.isInteger()) {
int value = number as 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
isInteger()
сначала проверить значение с помощью first, потому что toInteger()
будет выдано исключение, если строка не является числовой. То же самое относится к toFloat()
/isFloat()
int
это действительно так int
. Groovy по-прежнему будет отображать класс Integer из-за бокса, но вы, например, не сможете назначить null
ему int
, что было возможно в 1.0. Мы сочли это изменение некритическим, поскольку вы уже не могли использовать null в качестве аргумента для параметра вызова метода типа int
. Все это по-прежнему отличается от Java, так как в Java вы не можете преобразовать Integer в Long с помощью простого присваивания или вызвать метод int take с Long.
StringGroovyMethods.isInteger(String)
и DefaultGroovyMethods.isInteger(CharSequence)
не рекомендуется в пользу StringGroovyMethods.isInteger(CharSequence)
. То же самое и для toInteger()
.
Несколько способов сделать это, этот мой любимый:
def number = '123' as int
isInteger()
сначала.
Integer.parseInt(String)
который также выдает исключение, если строка не является числом, поэтому, учитывая вопрос, я не считаю это «проблемой»
В качестве дополнения к ответу Дона , не только заводной добавить .toInteger()
метод String
с, он также добавляет toBigDecimal()
, toBigInteger()
, toBoolean()
, toCharacter()
, toDouble()
, toFloat()
, toList()
, и toLong()
.
В том же духе groovy также добавляет is*
эквиваленты всем тем, которые возвращаются, true
если рассматриваемый String
вопрос может быть проанализирован в рассматриваемом формате.
Соответствующая страница GDK находится здесь.
isInteger()
, затем сделайте toInteger()
... то есть, если вы не хотите добавлять блок try
/ catch
:), но использование исключений для этого - плохая идея.
Я не уверен, был ли он введен в последних версиях groovy (первоначальный ответ довольно старый), но теперь вы можете использовать:
def num = mystring?.isInteger() ? mystring.toInteger() : null
или
def num = mystring?.isFloat() ? mystring.toFloat() : null
Я рекомендую использовать числа с плавающей точкой или даже двойные вместо целых в случае, если указанная строка ненадежна.
mystring.toInteger()
вместо mystring.toFloat()
. Так def num = mystring?.isInteger() ? mystring.toInteger() : null
было бы правильно.
Ну, Groovy прекрасно принимает форму Java. Если вы спрашиваете, есть ли способ Groovier , есть способ пойти Integer
.
Оба показаны здесь:
String s = "99"
assert 99 == Integer.parseInt(s)
Integer i = s as Integer
assert 99 == i
также вы можете сделать статический импорт
import static java.lang.Integer.parseInt as asInteger
и после этого использования
String s = "99"
asInteger(s)
toInteger()
Метод доступен в Groovy, вы можете использовать это.
Несколько способов добиться этого. Примеры как ниже
a. return "22".toInteger()
b. if("22".isInteger()) return "22".toInteger()
c. return "22" as Integer()
d. return Integer.parseInt("22")
Надеюсь это поможет
Преобразование Groovy Style:
Integer num = '589' as Integer
Если у вас есть параметр запроса:
Integer age = params.int('age')
Вот другой способ. если вы не любите исключения.
def strnumber = "100"
def intValue = strnumber.isInteger() ? (strnumber as int) : null
Способ использования должен все еще быть toInteger (), потому что это действительно не рекомендуется.
int value = '99'.toInteger()
Версия String устарела, но CharSequence - это интерфейс, который реализует String. Итак, использование String - это нормально, потому что ваш код будет работать, даже если метод будет работать только с CharSequence. То же самое касается isInteger ()
Смотрите этот вопрос для справки: Как преобразовать строку в CharSequence?
Я прокомментировал, потому что понятие устаревшего на этом методе заставило меня запутаться, и я хочу избежать этого для других людей.
Более простой способ преобразования строки в целое число в Groovy заключается в следующем ...
String aa="25"
int i= aa.toInteger()
Теперь «я» содержит целочисленное значение.
toInteger()
метод для конвертации ...