[groovy] Groovy에서 문자열을 int로 변환

나는이 String정수 값을 나타냅니다를하고로 변환하고 싶습니다 int. Java와 같은 그루비가 Integer.parseInt(String)있습니까?



답변

사용 toInteger()를 변환하는 방법을 StringInteger, 예를 들어,

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.StringGroovyMethodsGroovy 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


답변

여러 가지 방법으로이 방법을 가장 좋아합니다.

def number = '123' as int


답변

에 추가로 돈의 대답은 , 끝내 추가하지 않습니다 만 .toInteger()에 방법 String들, 또한 추가 toBigDecimal(), toBigInteger(), toBoolean(), toCharacter(), toDouble(), toFloat(), toList(),와 toLong().

같은 맥락에서, 그루비는 해당 형식을 해당 형식으로 구문 분석 할 수있는 경우 is*반환되는 모든 항목에 동등 값을 추가합니다 .trueString

관련 GDK 페이지 가 여기에 있습니다.


답변

그것이 최신 버전의 groovy (초기 답변이 상당히 오래됨)에 도입되었는지 확실하지 않지만 이제는 다음을 사용할 수 있습니다.

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

또는

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

제공된 문자열을 신뢰할 수없는 경우 정수 대신 float 또는 double을 사용하는 것이 좋습니다.


답변

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() 그루비에서 방법을 사용할 수 있습니다.