답변:
사용 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()
하므로 값을 먼저 확인해야합니다 toInteger()
. 동일은 적용 toFloat()
/isFloat()
int
이 실제로 있기 때문에 추가하고 싶었습니다 int
. 그루비는 여전히 때문에 권투의, Integer 클래스를 표시합니다,하지만 당신은 예를 들어 할당 할 수 없습니다 null
에 int
1.0에서 가능이었다. type의 메소드 호출 매개 변수에 대해 널을 인수로 이미 사용할 수 없으므로 변경 사항이 중요하지 않은 것으로 간주했습니다 int
. Java에서는 간단한 할당으로 Integer를 Long으로 변환하거나 Long을 사용하여 int taking 메소드를 호출 할 수 없으므로 Java와는 여전히 다릅니다.
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()
.
같은 맥락에서, 그루비는 해당 형식을 해당 형식으로 구문 분석 할 수있는 경우 is*
반환되는 모든 항목에 동등 값을 추가합니다 .true
String
관련 GDK 페이지 가 여기에 있습니다.
isInteger()
다음 수행하십시오 toInteger()
... 즉, try
/ catch
블록을 추가하지 않는 한 :) 예외를 사용하는 것은 좋지 않습니다.
그것이 최신 버전의 groovy (초기 답변이 상당히 오래됨)에 도입되었는지 확실하지 않지만 이제는 다음을 사용할 수 있습니다.
def num = mystring?.isInteger() ? mystring.toInteger() : null
또는
def num = mystring?.isFloat() ? mystring.toFloat() : null
제공된 문자열을 신뢰할 수없는 경우 정수 대신 float 또는 double을 사용하는 것이 좋습니다.
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
그루비 스타일 변환 :
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이 구현하는 인터페이스입니다. 따라서 메소드가 CharSequence에서만 작동하는 경우에도 코드는 여전히 작동하기 때문에 문자열을 사용하는 것이 좋습니다. isInteger ()와 동일
이 질문을 참조하십시오 : String을 CharSequence로 변환하는 방법?
나는이 방법에 대해 더 이상 사용되지 않는다는 개념이 혼란스러워 다른 사람들에게는 그것을 피하고 싶기 때문에 논평했다.