मेरे पास एक String
पूर्णांक मान का प्रतिनिधित्व करता है और इसे एक में बदलना चाहता है int
। क्या जावा के बराबर एक ग्रूवी है Integer.parseInt(String)
?
मेरे पास एक String
पूर्णांक मान का प्रतिनिधित्व करता है और इसे एक में बदलना चाहता है int
। क्या जावा के बराबर एक ग्रूवी है 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
}
ग्रूवी के हाल के संस्करणों में toInteger()
विधियों में से एक को हटा दिया गया है। निम्नलिखित org.codehaus.groovy.runtime.StringGroovyMethods
ग्रूवी 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
। बॉक्सिंग की वजह से ग्रूवी अभी भी इंटेगर क्लास को प्रदर्शित करेगा, लेकिन आप उदाहरण के लिए ए null
को असाइन नहीं कर पाएंगे int
, जो कि 1.0 में संभव था। हमने परिवर्तन को गैर-महत्वपूर्ण माना है, क्योंकि आप पहले से ही एक प्रकार की विधि कॉल पैरामीटर के लिए तर्क के रूप में अशक्त का उपयोग नहीं कर सकते हैं int
। यह सभी जावा से अलग है, जैसा कि जावा में आप एक साधारण असाइनमेंट द्वारा इंटीजर को लॉन्ग में परिवर्तित नहीं कर सकते हैं या एक लॉन्ग के साथ एक इंट ले लेने का तरीका नहीं कह सकते हैं।
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*
उन सभी में eqivalents भी जोड़ता है जो true
यदि String
प्रश्न में हैं तो प्रश्न में प्रारूप में पार्स किया जा सकता है।
प्रासंगिक GDK पृष्ठ यहां है।
isInteger()
, फिर करें toInteger()
... अर्थात, जब तक आप try
/ a catch
ब्लॉक नहीं जोड़ेंगे :) लेकिन इसके लिए अपवादों का उपयोग करना एक बुरा विचार है।
मुझे यकीन नहीं है कि अगर इसे ग्रूवी के हाल के संस्करणों में पेश किया गया था (प्रारंभिक उत्तर काफी पुराना है), लेकिन अब आप इसका उपयोग कर सकते हैं:
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 जावा फॉर्म को ठीक स्वीकार करता है। यदि आप पूछ रहे हैं कि क्या कोई ग्रोवियर रास्ता है, तो जाने के लिए एक रास्ता है 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()
विधि ग्रूवी में उपलब्ध है, आप इसका उपयोग कर सकते हैं।
इसे प्राप्त करने के कई तरीके। उदाहरण नीचे दिए गए हैं
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
उपयोग करने का तरीका अभी भी Inteteger () होना चाहिए, क्योंकि यह वास्तव में पदावनत नहीं है।
int value = '99'.toInteger()
स्ट्रिंग संस्करण को हटा दिया गया है, लेकिन CharSequence एक इंटरफ़ेस है जो स्ट्रिंग लागू करता है। इसलिए, स्ट्रिंग का उपयोग करना ठीक है, क्योंकि आपका कोड तब भी काम करेगा, जब विधि केवल CharSequence के साथ काम करेगी। उसी के लिए जाता है ()
संदर्भ के लिए यह प्रश्न देखें: स्ट्रिंग को चारसेंसेंस में कैसे बदलें?
मैंने टिप्पणी की, क्योंकि इस पद्धति पर पदावनत करने की धारणा ने मुझे भ्रमित कर दिया और मैं अन्य लोगों के लिए इससे बचना चाहता हूं।
ग्रूवी में एक स्ट्रिंग को प्रस्तुत करने का सरल तरीका निम्नानुसार है ...
String aa="25"
int i= aa.toInteger()
अब "मैं" पूर्णांक मूल्य धारण करता है।
toInteger()
कनवर्ट करने के लिए विधि का उपयोग करें ...