আমার কাছে একটি রয়েছে String
যা একটি পূর্ণসংখ্যার মান উপস্থাপন করে এবং এটি একটিতে রূপান্তর করতে চাই int
। জাভা এর সমান কি আছে Integer.parseInt(String)
?
আমার কাছে একটি রয়েছে String
যা একটি পূর্ণসংখ্যার মান উপস্থাপন করে এবং এটি একটিতে রূপান্তর করতে চাই int
। জাভা এর সমান কি আছে Integer.parseInt(String)
?
উত্তর:
ব্যবহার করুন toInteger()
একটি রূপান্তর করতে পদ্ধতি String
একটি থেকে Integer
, যেমন
int value = "99".toInteger()
একটি বিকল্প, যা একটি অবচয় পদ্ধতি ব্যবহার করা এড়ানো হয় (নীচে দেখুন) is
int value = "66" as Integer
আপনি কি না চেক করতে পারে এমন String
করতে রূপান্তর, ব্যবহার করণ আগে রূপান্তরিত করা
String number = "66"
if (number.isInteger()) {
int value = number as Integer
}
গ্রোভির সাম্প্রতিক সংস্করণগুলিতে একটি toInteger()
পদ্ধতি হ্রাস করা হয়েছে। নিম্নলিখিত org.codehaus.groovy.runtime.StringGroovyMethods
গ্রোভির ২.৪.৪ থেকে নেওয়া হয়েছে
/**
* 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()
।
একই শিরাতে, গ্রোভি is*
যারা ফিরে আসে তাদের সকলের সাথে eivivalents যুক্ত true
করেString
যদি প্রশ্নটিতে প্রশ্নটির ফর্ম্যাটটিতে পার্স করা যায়।
সম্পর্কিত জিডিকে পৃষ্ঠাটি এখানে page
isInteger()
, তারপর কি toInteger()
হল যে ..., যদি না আপনি বরং একটি যোগ চাই try
/ 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
সঠিক হবে।
ঠিক আছে, গ্রোভি জাভা ফর্মটি ঠিকঠাক গ্রহণ করেছেন। আপনি যদি জিজ্ঞাসা করছেন যে কোনও গ্রোভিয়ার উপায় আছে কিনা, সেখানে যাওয়ার একটি উপায় আছে 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")
আশাকরি এটা সাহায্য করবে
গ্রোভি স্টাইল রূপান্তর:
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 aa="25"
int i= aa.toInteger()
এখন "আমি" পূর্ণসংখ্যা মানটি ধরে রাখে।
toInteger()
রূপান্তর করার জন্য পদ্ধতিটি ব্যবহার করুন ...