답변:
원하는 결과 유형에 따라 시도하십시오.
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
이점:
Boolean.TRUE
또는 의 두 인스턴스를 재사용합니다 Boolean.FALSE
.공식 문서는 Javadoc에 있습니다.
업데이트 :
오토 박싱도 사용할 수 있지만 성능 비용이 있습니다.
캐스트를 피할 수 없을 때가 아니라 스스로 캐스팅해야 할 때에 만 사용하는 것이 좋습니다.
boolean boolean2 = Boolean.valueOf("true");
Boolean.valueOf (string) 또는 Boolean.parseBoolean (string)을 사용할 때는주의해야합니다 . 그 이유는 String이 "true"가 아닌 경우 메소드가 항상 false를 리턴하기 때문입니다 (대소 문자는 무시 됨).
예를 들면 다음과 같습니다.
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 년 1 월 현재와 같이 가장 좋은 방법은 아파치를 사용하는 것 BooleanUtils.toBoolean
입니다.
이렇게하면 문자열과 같은 부울이 부울로 변환됩니다 (예 : Y, 예, true, N, no, false 등).
정말 편리합니다!
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
문자열의 부울 값을 얻으려면 다음을 시도하십시오.
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.
}
}
오류가 있으면 null을 반환합니다. 예:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
Javadoc에 따르면 :) 에서 예외가 발생하지 않습니다.
왜 정규 표현식을 사용하지 않습니까?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
이 문제를 단순화하기 위해 soyuz-to 라이브러리를 만들었습니다 (X를 Y로 변환). 비슷한 질문에 대한 일련의 답변입니다. 이러한 간단한 문제에 라이브러리를 사용하는 것은 이상 할 수 있지만 많은 경우에 도움이됩니다.
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
확인하십시오-매우 간단하고 다른 유용한 기능이 많이 있습니다
http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx를 방문하십시오 .
이것은 당신에게 무엇을 해야할지에 대한 아이디어를 줄 것입니다.
이것은 Java 설명서 에서 얻은 것입니다 .
메소드의 상세
parseBoolean
public static boolean parseBoolean(String s)
문자열 인수를 부울로 구문 분석합니다. 반환 된 부울 값은 문자열 인수가
null
문자열 "true
" 과 다르거 나 같지 않은 경우 true 값을 나타냅니다 .매개 변수 :
s
-해석되는 boolean 표현을 포함한 String반환 값 : 캐릭터 라인 인수로 나타내지는 부울
이후 : 1.5
System 클래스에서 문자열에 해당하는 부울 값을 직접 설정하고 어디서나 액세스 할 수 있습니다.
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