String
वस्तु को Boolean
वस्तु में कैसे बदलें?
String
वस्तु को Boolean
वस्तु में कैसे बदलें?
जवाबों:
कोशिश करें (आप किस प्रकार का परिणाम चाहते हैं) पर निर्भर करता है:
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
लाभ:
Boolean.TRUE
या तो के दो उदाहरणों का पुन: उपयोग करता है Boolean.FALSE
।आधिकारिक दस्तावेज जावदोक में है ।
अपडेट:
ऑटोबॉक्सिंग का उपयोग भी किया जा सकता है, लेकिन इसकी प्रदर्शन लागत है।
मैं इसका उपयोग केवल तभी करने का सुझाव देता हूं, जब आपको खुद को कास्ट करना होगा, न कि जब कास्ट टालने योग्य हो।
boolean boolean2 = Boolean.valueOf("true");
Boolean.valueOf (string) या Boolean.parseBoolean (string) का उपयोग करते समय आपको लापरवाह होना चाहिए । इसका कारण यह है कि अगर स्टिंग "सच" (मामले को नजरअंदाज नहीं किया गया है) के बराबर नहीं है, तो तरीके हमेशा झूठे लौटेंगे।
उदाहरण के लिए:
Boolean.valueOf("YES") -> false
उस व्यवहार के कारण, मैं यह सुनिश्चित करने के लिए कुछ तंत्र जोड़ने की सिफारिश करूंगा कि स्ट्रिंग जिसे एक बूलियन में अनुवादित किया जाना चाहिए, एक निर्दिष्ट प्रारूप का अनुसरण करता है।
उदाहरण के लिए:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
KLE के उत्कृष्ट उत्तर के अलावा, हम कुछ और अधिक लचीला भी बना सकते हैं:
boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") ||
string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") ||
string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") ||
string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");
(zlajo के जवाब से प्रेरित ... :-))
खैर, अब जनवरी, 2018 में, इसके लिए सबसे अच्छा तरीका अपाचे का उपयोग करना है BooleanUtils.toBoolean
।
यह किसी भी बूलियन को स्ट्रिंग जैसे बूलियन में परिवर्तित कर देगा, जैसे Y, हाँ, सच, एन, नो, गलत, आदि।
सच में काम!
public static boolean stringToBool(String s) {
s = s.toLowerCase();
Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));
if (trueSet.contains(s))
return true;
if (falseSet.contains(s))
return false;
throw new IllegalArgumentException(s + " is not a boolean.");
}
स्ट्रिंग को बूलियन में बदलने का मेरा तरीका।
String[] values= new String[]{"y","Y","n","N","Yes","YES","yes","no","No","NO","true","false","True","False","TRUE","FALSE",null};
for(String booleanStr : values){
System.out.println("Str ="+ booleanStr +": boolean =" +BooleanUtils.toBoolean(booleanStr));
}
परिणाम:
Str =N: boolean =false
Str =Yes: boolean =true
Str =YES: boolean =true
Str =yes: boolean =true
Str =no: boolean =false
Str =No: boolean =false
Str =NO: boolean =false
Str =true: boolean =true
Str =false: boolean =false
Str =True: boolean =true
Str =False: boolean =false
Str =TRUE: boolean =true
Str =FALSE: boolean =false
Str =null: boolean =false
मैंने इस तरह से इसे किया:
"1##true".contains( string )
मेरे मामले में ज्यादातर या तो 1 या सच है। मैं हैश को डिवाइडर के रूप में उपयोग करता हूं।
स्ट्रिंग के बूलियन मूल्य प्राप्त करने के लिए, यह प्रयास करें:
public boolean toBoolean(String s) {
try {
return Boolean.parseBoolean(s); // Successfully converted String to boolean
} catch(Exception e) {
return null; // There was some error, so return null.
}
}
यदि कोई त्रुटि है, तो यह अशक्त हो जाएगी। उदाहरण:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
जावदोक के अनुसार, एक अपवाद नहीं फेंकता है।
क्यों नहीं एक नियमित अभिव्यक्ति का उपयोग करें?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
हमने इस समस्या को सरल करने के लिए (एक्स को वाई में परिवर्तित) करने के लिए सोयूज-टू लाइब्रेरी बनाई । यह इसी तरह के सवालों के लिए SO उत्तरों का एक सेट है। इस तरह की एक साधारण समस्या के लिए पुस्तकालय का उपयोग करना अजीब हो सकता है, लेकिन यह वास्तव में इसी तरह के कई मामलों में मदद करता है।
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
कृपया इसे जांचें - यह बहुत सरल है और इसमें कई अन्य उपयोगी विशेषताएं हैं
यात्रा http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
इससे आपको अंदाजा हो जाएगा कि क्या करना है।
यह मुझे जावा प्रलेखन से मिलता है :
विधि का विवरण
parseBoolean
public static boolean parseBoolean(String s)
स्ट्रिंग तर्क को बूलियन के रूप में देखता है। लौटाया गया स्ट्रिंग स्ट्रिंग तर्क नहीं है
null
और समान है, तो मामले को अनदेखा करते हुए, स्ट्रिंग "true
" के लिए मूल्य का प्रतिनिधित्व करता है ।पैरामीटर:
s
- स्ट्रिंग बूलियन प्रतिनिधित्व युक्त पार्स करने के लिएरिटर्न: स्ट्रिंग तर्क द्वारा प्रस्तुत बूलियन
चूंकि: 1.5
आप सीधे सिस्टम क्लास द्वारा किसी भी स्ट्रिंग के बराबर बूलियन मान सेट कर सकते हैं और इसे कहीं भी एक्सेस कर सकते हैं।
System.setProperty("n","false");
System.setProperty("y","true");
System.setProperty("yes","true");
System.setProperty("no","false");
System.out.println(Boolean.getBoolean("n")); //false
System.out.println(Boolean.getBoolean("y")); //true
System.out.println(Boolean.getBoolean("no")); //false
System.out.println(Boolean.getBoolean("yes")); //true