回答:
toInteger()
メソッドを使用してa 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()
メソッドの1つ が非推奨になりました。以下は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
。ボックス化のため、Groovyは引き続きIntegerクラスを表示しますが、たとえば、1.0で可能だっnull
たに割り当てることはできませんint
。typeのメソッド呼び出しパラメーターの引数としてnullを使用することはできなかったため、変更は重要ではないと考えましたint
。これは、Javaとはまだすべて異なります。Javaでは、単純な代入によってIntegerをLongに変換したり、Longを使用してint取得メソッドを呼び出したりすることはできません。
StringGroovyMethods.isInteger(String)
およびDefaultGroovyMethods.isInteger(CharSequence)
は非推奨ですStringGroovyMethods.isInteger(CharSequence)
。同じことが当てはまりますtoInteger()
。
それを行ういくつかの方法、これは私のお気に入りです:
def number = '123' as int
isInteger()
まず確認してください。
Integer.parseInt(String)
文字列が、そう疑問を考えると、私はこの「問題」を検討していない、数ではない場合も例外をスローした
補遺としてドンの答えだけでなく、グルーヴィー追加ん.toInteger()
にメソッドをString
S、それはまた、追加toBigDecimal()
、toBigInteger()
、toBoolean()
、toCharacter()
、toDouble()
、toFloat()
、toList()
、およびtoLong()
。
同じ静脈では、グルーヴィーにも追加されますis*
これらのことリターンのすべてにeqivalentsを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スタイルの変換:
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()についても同様です
参照用のこの質問を参照してください: 文字列をCharSequenceに変換する方法?
私はコメントしました。なぜなら、この方法での非推奨の概念は私を混乱させ、他の人にはそれを避けたいからです。