2

我正在尝试编写一个将接受输入的函数,检查它是否将“[”作为第一个字符,将“]”作为最后一个字符,如果有,则将其删除。字符串中可能有更多括号,如果是这种情况,那么我需要打印一个错误语句。在我看过的所有地方,我都看到了如果只有两个括号如何执行此操作的示例,但我需要检查是否还有更多,这就是我感到困惑的地方。

我看过使用的例子regex,我知道如果我能找到一个只有两个括号在外面的字符串,我可以用substring它来修剪它,但我不知道如何检查字符串的实例括号而不删除所有这些。

帮助将不胜感激。谢谢。

4

3 回答 3

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

在 if 语句旁边发布了潜在的正则表达式解决方案。警告:在正则表达式方面不是最好的,所以它们可能不正确。

正如@Ingo 在评论中指出的那样,str.charAt(0)空字符串将失败。

于 2013-10-08T20:45:34.893 回答
0

您可以使用 String.charAt(int) 来做到这一点: http: //docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#charAt%28int%29

于 2013-10-08T20:45:10.893 回答
0

由于您声称知道您正在做什么来修剪前括号和尾括号,因此听起来缺少的链接是类.contains()上的方法String

if (myString.contains("]") || myString.contains("["))
    throw new Exception("myString contains invalid brackets");
于 2013-10-08T20:45:52.297 回答