2013-10-08 73 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");