2011-07-08 63 views
-1

解析布爾型String的實用方法是什麼?通過適當我的意思是java.lang.Boolean中解析Java中的「true」/「false」

"true" => true 
"false" => false 
"foo" => error 

解析方法是狡猾的 - 他們不區分「富」「假」。 Java庫(或Guava或Commons Lang)中的其他內容是否正確執行?

是的,這只是一對夫婦,我只是不寫任何線,我不應該。 :-)

+3

有一點重用代碼/庫只是太過分了。這是其中的一次。 – Coeffect

+3

我想你必須寫幾行。 :) –

+0

不確定存在任何不匹配時會拋出錯誤的東西。與編寫自己的Booleans.parse((String)str,(boolean)strictMatch)相比,您可能會花更多時間尋找解決方案。 –

回答

3

退房布爾utils的形式阿帕奇百科全書:

Boolean Utils API

一個字符串轉換爲布爾 如果沒有匹配 發現拋出異常。

如果沒有匹配,則返回null。

BooleanUtils.toBoolean( 「真」, 「真」, 「假」)=真
BooleanUtils.toBoolean( 「假」, 「真」, 「假」)=假

+0

感謝指向BooleanUtils的指針。我認爲[toBooleanObject(「true」)](http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/BooleanUtils.html#toBooleanObject(java.lang.String))適合法案。它不會拋出一個錯誤,但它返回null,它仍然會解決問題(拆箱時)。 – Iain

3
if ("true".equalsIgnoreCase(yourString)) 
     return true; 
else if ("false".equalsIgnoreCase(yourString)) 
     return false; 
else 
     throw new Exception(); 

沒有一個。

+0

爲什麼-1?它完成工作。 (從我+1,甚至出) –

+0

@亞歷山大 - 感謝:-)可能是因爲OP不想「寫任何線」 – Kal

+0

我認爲'equalsIgnoreCase'會更合適,不是嗎? – mre

0

怎麼樣很簡單:

編輯:還是我錯過了點...

boolean isTrue (String s) { 
    return theString.toLowerCase().equals("true"); 
} 
+1

可能是交換比較的一個好主意。如果s爲空,這將拋出一個NPE。 – Kal

+0

OP只需要「真」和「假」作爲有效選項。在你的情況下,任何字符串都是有效的選項。 –

6

老實說,這個問題很可笑。是的,有一些方法可以構建它(布爾應用程序API Apache Fan提到)。但是,你要以一種奇特的方式去做某件事,其代價是A)生產力(停止浪費你的時間,寫下三行代碼)和B)可讀性。什麼是更易於閱讀:

if("true".equals(myString)) 

if(BooleanUtils.toBoolean(myString, "true", "false")) 

我會去每一次的第一個。更好的是,使用IgnoreCase選項進行字符串比較。 toBoolean區分大小寫,所以「True」實際上會引發異常。真棒!這非常有用!

+0

-1爲秸稈比較;選擇是在BooleanUtils調用之間還是類似於@ Kal的示例。也不漂亮。兩者都完成了工作。如你所說,這不是最嚴重的問題。 :) – Iain