我正在尝试编写一个将接受输入的函数,检查它是否有“[”作为第一个char和“]”作为最后一个并删除它们,如果它。字符串中可能包含更多括号,如果是这种情况,那么我需要打印错误语句。在我看过的每个地方,我已经看到了如果只是两个括号如何做到这一点的例子,但我需要检查是否还有更多,这就是我感到困惑的地方。
我见过使用regex
的例子,我知道如果我能在外面找到只有两个括号的字符串,我可以使用substring
修剪它,但我可以找不到如何检查括号实例的字符串而不重新编号。
非常感谢帮助。感谢。
答案 0 :(得分: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
}
在if语句旁边发布潜在的正则表达式解决方案。警告:正则表达式不是最好的,所以它们可能不正确。
正如@Ingo在评论中指出的那样,str.charAt(0)
将在空字符串上失败。
答案 1 :(得分:0)
您可以使用String.charAt(int)来执行此操作: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#charAt%28int%29
答案 2 :(得分:0)
由于您声称知道要修剪前导括号和尾随括号,所以听起来缺少的链接是.contains()
类上的String
方法。
if (myString.contains("]") || myString.contains("["))
throw new Exception("myString contains invalid brackets");