检查String是否仅包含这些字符{([])}

时间:2018-03-27 08:35:27

标签: java

我正在尝试编写一种方法来检查给定字符串是否包含这些{([])}个字符。

// Test strings
String S = "{U}"  // should give FALSE
String S = "[U]"  // should give FALSE
String S = "U"  // should give FALSE
String S = "([)()]" // should give TRUE

我试过了:

    if(S.matches("[{(\\[\\])}]")) {
        return 1;
    }

但这永远不会真实。

2 个答案:

答案 0 :(得分:3)

String.matches()整个字符串与模式匹配。您尝试的模式失败,因为它只匹配单个字符 - 例如,"{".matches("[{(\\[\\])}]")将返回true。您需要为正则表达式添加重复 - 如果要匹配空字符串,则为*;如果字符串必须包含至少一个字符,则为+,如下所示:

if(S.matches("[{(\\[\\])}]+")) {
    return 1;
}

答案 1 :(得分:0)

if(S.matches("^[{(\\[\\])}]+$")) {
    return 1;
}

^ - 行的开头

[]+ - 字符类[]中包含的字符一次或多次

$ - 行尾

如果您想创建一个方法(正如您之前提到过的那样),您可能需要考虑创建返回boolean的方法(请注意返回{{1} (booleantrue)不等于在Java中返回false1

0

如果您的目的是在条件满足时返回public boolean checkIfContainsOnlyParenthesis(String input) { return input.matches("^[{(\\[\\])}]+$"); } 并且 - 例如 - 1,当它不是时,您需要将该方法的返回值更改为{{1 }}:

0

通过这种方式,您可以将int字符串作为该方法的参数传递,如下所示:

public int checkIfContainsOnlyParenthesis(String input) {
    if(input.matches("^[{(\\[\\])}]+$")) {
        return 1;
    } else {
        return 0;
    }
}