Kaip konvertuoti eilutės objektą į loginį objektą?

Kaip konvertuoti String objektą į Boolean objektą?

251
08 окт. nustatė Suresh 08 okt. 2009-10-08 19:00 '09, 7 val. 2009-10-08 19:00
@ 12 atsakymų

Pabandykite (priklausomai nuo to, kokio tipo rezultatas norite):

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

Privalumas:

  • Būlio: tai nesukuria naujų Būlio atvejų, todėl našumas yra geresnis (ir mažiau surinktų šiukšlių). Ji pakartotinai naudoja du „ Boolean.TRUE arba „ Boolean.FALSE .
  • boolean: egzempliorius nereikalingas, naudojate primityvų tipą.

Oficialus dokumentas yra javadoc .


Atnaujinta:

Taip pat gali būti naudojamas automatinis šifravimas, tačiau jis veikia.
Aš siūlau jį naudoti tik tada, kai turite mesti save, o ne tada, kai galima išvengti metimo.

398
08 окт. KLE 08 d. atsakymas 2009-10-08 19:02 '09, 19:02, 2009-10-08 19:02

Naudodami Boolean.valueOf (string) arba Boolean.parseBoolean (string), turite būti atsargūs. Taip yra todėl, kad metodai visada sugrįš į klaidą, jei eilutė nėra lygi „tiesa“ (byla ignoruojama).

Pavyzdžiui:

 Boolean.valueOf("YES") -> false 

Dėl šio elgesio aš rekomenduoju pridėti tam tikrą mechanizmą, kad būtų užtikrinta, jog eilutė, kuri bus išversta į logišką, atitiktų nurodytą formatą.

Pavyzdžiui:

 if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) { Boolean.valueOf(string) // do something } else { // throw some exception } 
77
08 окт. atsakymas pateikiamas zlajo 08 okt. 2009-10-08 19:17 '09, 7:17 val. 2009-10-08 19:17
 Boolean b = Boolean.valueOf(string); 

B reikšmė b tiesa, jei eilutė nėra nulinė ir yra true (ignoruojant atvejį).

18
08 окт. atsakymą pateikė CJS 08 okt. 2009-10-08 19:15 '09, 19:15, 2009-10-08 19:15

Be puikaus KLE atsakymo, mes taip pat galime padaryti kažką lankstesnio:

 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"); 

(įkvėptas Zlajo atsakymo ...: -))

18
08 окт. atsakymą pateikė PhiLho 08 okt. 2009-10-08 19:23 '09, 19:23 PM 2009-10-08 19:23
 boolean b = string.equalsIgnoreCase("true"); 
9
08 окт. atsakymas pateikiamas Zed 08 okt. 2009-10-08 19:27 '09, 07:27 pm 2009-10-08 19:27
 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."); } 

Mano būdas paversti eilutę į loginį.

3
10 дек. Atsakymą pateikė AechoLiu 10 d. 2015-12-10 05:33 '15 at 5:33 am 2015-12-10 05:33

Jei norite gauti Būlio eilutę, pabandykite atlikti šiuos veiksmus:

 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. } } 

Jei įvyksta klaida, jis bus grąžintas. Pavyzdys:

 toBoolean("true"); // Returns true toBoolean("tr.u;e"); // Returns null 
2
28 июля '15 в 2:15 2015-07-28 02:15 atsakymą pateikė vartotojo5162630 liepos 28 d. 15:15 2015-07-28 02:15
 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)); } 

Rezultatas:

 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 
2
05 февр. Atsakymą pateikė Dhana 05 vasaris. 2016-02-05 02:11 '16 at 2:11 AM 2016-02-05 02:11

Štai kaip aš tai padariau:

"1##true".contains( string )

Mano verslui, daugiausia 1 ar tiesa. Aš naudoju maišus kaip ribotuvus.

0
06 июля '15 в 16:16 2015-07-06 16:16 Atsakymą pateikė Tomislav Boras liepos 16 d. 15 val. 16:16 2015-07-06 16:16

Kodėl gi ne naudoti įprastą išraišką?

 public static boolean toBoolean( String target ) { if( target == null ) return false; return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" ); } 
0
03 июля '16 в 12:26 2016-07-03 12:26 Atsakymą pateikė Christophe liepos 03 d. 16, 12:26 2016-07-03 12:26

galite tiesiogiai nustatyti Būlio vertę, lygią bet kuriai sisteminės klasės eilutei, ir pasiekti ją bet kur.

 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 
-2
20 июля '15 в 12:23 2015-07-20 12:23 atsakymas duotas Prateek Singh liepos 20 d. 15 val. 12:23 2015-07-20 12:23

Apsilankykite http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx

Tai suteiks jums idėją, ką daryti.

Štai ką gaunu iš „ Java“ dokumentacijos :

Išsamus metodo aprašymas

parseBoolean

public static boolean parseBoolean(String s)

Perskaito eilutės argumentą kaip logišką. Boolean grįžimo vertė yra teisinga, jei eilutės argumentas nėra null ir, ignoruojant atvejį, eilutė „ true “.

Parametrai:

s - eilutė, kurioje yra analizuojamas loginis vaizdas.

Grąžina: loginė reikšmė, atstovaujama eilutės argumentu.

C: 1.5

-3
09 окт. atsakymą pateikė „ Vesco Pro“ spalio 9 d. 2013-10-09 02:48 '13, 2:48, 2013-10-09 02:48

Kiti klausimai apie „ žymių arba „ Klauskite“