2013-10-08 75 views
1

我想寫一個函數,將採取輸入,檢查是否有「[」作爲第一個字符和「]」作爲最後並刪除它們,如果它確實。該字符串可能有更多的括號,如果是這樣的話,那麼我需要打印一個錯誤語句。在我看過的所有地方,如果只是兩個括號,我就會看到如何做到這一點的例子,但是我需要檢查是否還有其他問題,這就是我感到困惑的地方。如果字符串包含括號,刪除他們

我見過使用regex的例子,我知道如果我可以在外面找到一個只有兩個括號的字符串,我可以使用substring來修剪它,但我無法弄清楚如何檢查括號中的實例的字符串,而不用重新提交它們。

幫助將不勝感激。謝謝。

+1

'String'有許多有用的方法來檢查它的內容。 –

+1

你可以使用'substring'來修剪外部括號,然後檢查修剪後的字符串'是否包含'任何括號 – Alowaniak

回答

3
if(str.chatAt(0) == '[' && str.charAt(str.length()-1) == ']') //str.matches("\\[.*\\]") 
{ 
    str = str.substring(1, str.length() - 1); 
} 
if(str.contains("[") || str.contains("]")) //str.matches(".*[\\[\\]].*") 
{ 
    //throw your error 
} 

發佈潛在的正則表達式的解決方案,如果報表旁邊。警告:在正則表達式中不是最大的,所以它們可能不正確。

as @Ingo在評論中指出,str.charAt(0)將在空字符串上失敗。

+1

對於空字符串失敗。 – Ingo

+0

@Ingo是的,添加到答案。正則表達式版本應該沒問題,但我認爲。 – Cruncher

0

既然你聲稱知道你在做什麼來修剪前後括號,那聽起來像缺少的鏈接就是String類中的.contains()方法。

if (myString.contains("]") || myString.contains("[")) 
    throw new Exception("myString contains invalid brackets");