स्ट्रिंग ऑब्जेक्ट को बूलियन ऑब्जेक्ट में कैसे बदलें?


324

Stringवस्तु को Booleanवस्तु में कैसे बदलें?


2
स्ट्रिंग का मूल्य क्या है?
जेम्स गुडविन

2
आपकी अपेक्षा क्या है कि कैसे एक स्ट्रिंग को बूलियन में परिवर्तित किया जाना चाहिए?
स्टीव कूओ

1
myvartypeboolean = !! valueetoconvert

जवाबों:


516

कोशिश करें (आप किस प्रकार का परिणाम चाहते हैं) पर निर्भर करता है:

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

लाभ:

  • बूलियन: यह बूलियन के नए उदाहरण नहीं बनाता है, इसलिए प्रदर्शन बेहतर है (और कम कचरा-संग्रह)। यह Boolean.TRUEया तो के दो उदाहरणों का पुन: उपयोग करता है Boolean.FALSE
  • बूलियन: कोई उदाहरण की आवश्यकता नहीं है, आप आदिम प्रकार का उपयोग करते हैं।

आधिकारिक दस्तावेज जावदोक में है


अपडेट:

ऑटोबॉक्सिंग का उपयोग भी किया जा सकता है, लेकिन इसकी प्रदर्शन लागत है।
मैं इसका उपयोग केवल तभी करने का सुझाव देता हूं, जब आपको खुद को कास्ट करना होगा, न कि जब कास्ट टालने योग्य हो।


1
Boolaen2 को Boolean.valueOf असाइन नहीं किया जा सकता है, वैसे भी ऑटो-अनबॉक्स नहीं है? मैं यहाँ पार्सल बूलियन का अंतर नहीं देख रहा हूँ।
एलेक्स फीटमैन

9
सबसे बड़ी समस्या यह है कि बूलियन अपवाद नहीं होगा जब वह ऐसा कुछ देखता है जिसे उसे स्वीकार नहीं करना चाहिए। यह किसी भी चीज़ के लिए सही लौटेगा जो इसे "सत्य" के रूप में देखता है और बाकी सब चीजों के लिए गलत वापस आएगा । यदि आप एक स्ट्रिंग को एक उपयुक्त बूलियन मान से मिलान करने का प्रयास कर रहे हैं, तो आपको मैन्युअल रूप से अवैध मामलों को पकड़ने के लिए अतिरिक्त तर्क जोड़ना होगा।
ब्रैंडन बेल्विन

क्या होगा अगर मैं उपयोग boolean boolean2 = Boolean.valueOf("true");
करूं

1
यदि स्ट्रिंग ऑब्जेक्ट अशक्त है, तो Boolean.valueOf (स्ट्रिंग) गलत वापस आ जाएगी। लेकिन बूलियन शून्य मान भी धारण कर सकता है। इसके लिए आप कोई सहायता प्रदान करते हैं।
अमित केट

90

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
}

9
यह सबसे अच्छा उदाहरण है जिसे मैंने देखा है और जिसे बूलियन प्रकार से लागू किया जाना चाहिए था। अमान्य बूलियन मान के लिए एक अपवाद को फेंकना कई अनुप्रयोगों के लिए महत्वपूर्ण है।
ब्रैंडन बेल्विन

2
नहीं, पूरी तरह से सच नहीं है। यहाँ parseBoolean सार्वजनिक स्थैतिक बूलियन parseBoolean (स्ट्रिंग s) {((s! = null) && s.equalsIgnoreCase ("सही") का अंतर्निहित कार्यान्वयन है; }
electricalbah

हे ... यदि आपको ऐसा कोड लिखने की आवश्यकता है, तो आपको Boolean.valueOf पर कॉल करने की आवश्यकता नहीं है। इसके बजाय आप इसे सरल बना सकते हैं यदि कथन है तो यह वही करेगा जो आप चाहते हैं ;-)

22
Boolean b = Boolean.valueOf(string);

bयदि स्ट्रिंग एक अशक्त नहीं है और true(मामले की अनदेखी) के बराबर है, तो इसका मूल्य सही है ।


17

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 के जवाब से प्रेरित ... :-))



9

खैर, अब जनवरी, 2018 में, इसके लिए सबसे अच्छा तरीका अपाचे का उपयोग करना है BooleanUtils.toBoolean

यह किसी भी बूलियन को स्ट्रिंग जैसे बूलियन में परिवर्तित कर देगा, जैसे Y, हाँ, सच, एन, नो, गलत, आदि।

सच में काम!


4
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.");
    }

स्ट्रिंग को बूलियन में बदलने का मेरा तरीका।


3
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

बूलियन यूटिल्स क्या है?
james.garriss

1
org.apache.commons.lang3.BooleanUtils अपाचे कॉमन्स लैंग एपीआई से है।
धना

सभी उपयोग के मामलों को इकट्ठा करने के प्रयासों के लिए प्लस।
गौरव

1

मैंने इस तरह से इसे किया:

"1##true".contains( string )

मेरे मामले में ज्यादातर या तो 1 या सच है। मैं हैश को डिवाइडर के रूप में उपयोग करता हूं।


0

स्ट्रिंग के बूलियन मूल्य प्राप्त करने के लिए, यह प्रयास करें:

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

5
क्या आपने यह कोशिश की है? :) parseBoolean(String s)जावदोक के अनुसार, एक अपवाद नहीं फेंकता है।
18-24 को

0

क्यों नहीं एक नियमित अभिव्यक्ति का उपयोग करें?

public static boolean toBoolean( String target )
{
    if( target == null ) return false;
    return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}

0

हमने इस समस्या को सरल करने के लिए (एक्स को वाई में परिवर्तित) करने के लिए सोयूज-टू लाइब्रेरी बनाई । यह इसी तरह के सवालों के लिए SO उत्तरों का एक सेट है। इस तरह की एक साधारण समस्या के लिए पुस्तकालय का उपयोग करना अजीब हो सकता है, लेकिन यह वास्तव में इसी तरह के कई मामलों में मदद करता है।

import io.thedocs.soyuz.to;

Boolean aBoolean = to.Boolean("true");

कृपया इसे जांचें - यह बहुत सरल है और इसमें कई अन्य उपयोगी विशेषताएं हैं


-3

यात्रा http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx

इससे आपको अंदाजा हो जाएगा कि क्या करना है।

यह मुझे जावा प्रलेखन से मिलता है :

विधि का विवरण

parseBoolean

public static boolean parseBoolean(String s)

स्ट्रिंग तर्क को बूलियन के रूप में देखता है। लौटाया गया स्ट्रिंग स्ट्रिंग तर्क नहीं है nullऔर समान है, तो मामले को अनदेखा करते हुए, स्ट्रिंग " true" के लिए मूल्य का प्रतिनिधित्व करता है ।

पैरामीटर:

s - स्ट्रिंग बूलियन प्रतिनिधित्व युक्त पार्स करने के लिए

रिटर्न: स्ट्रिंग तर्क द्वारा प्रस्तुत बूलियन

चूंकि: 1.5


1
हालाँकि प्रश्न का पाठ स्पष्ट नहीं है, यह जावा के बारे में एक प्रश्न है। कम से कम इसे इस तरह से टैग किया गया है। यह जवाब लोगों को भ्रमित कर सकता है।
paulo.albuquerque 9

-3

आप सीधे सिस्टम क्लास द्वारा किसी भी स्ट्रिंग के बराबर बूलियन मान सेट कर सकते हैं और इसे कहीं भी एक्सेस कर सकते हैं।

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

1
यह एक स्ट्रिंग को बूलियन में बदलने का एक बहुत ही आसान प्रस्ताव है और इसका कोई मतलब नहीं है।
५३०
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.