我正在编写一个示例应用程序,其中遇到了以下问题:

我必须检查字符的“兼容性”。

boolean checkIfPairCorrect(Character c1, Character c2) {...}


简而言之,就像:“检查这些字符是否构成正确的开闭对”。
例如:

对“(”和“)”返回TRUE
对“ {”和“}”返回TRUE
对“(”和“}”返回FALSE //不兼容的括号
将“)”和“(”配对为FALSE //错误的顺序
对“ a”和“ 3”返回FALSE // //'a'或'3'不是可以找到“结束”字符的字符

您会说:“只需编写一个正则表达式人!!!”使用一些互联网帮助,例如:

Regular Expression to match outer brackets
Regex to restrict only one occurrence of open and close brackets using C#
Regexp and brackets article

而且你会是对的,但是...
这个问题对我来说很困难,因为函数可以将某些外来字符作为参数(UTF-8编码),例如日语,土耳其语,阿拉伯语等。所以我正在寻找可以解决我的问题的图书馆。

问题:您是否知道对我而言可能有用的任何库,或者您有如何处理它的提示?

最佳答案

为什么没有这样的地图:

Map<Character, Character> pairs = new HashMap<Character, Character>();
pairs.put('(', ')');
pairs.put('{', '}');
pairs.put('[', ']');
...


然后你的方法可能是

boolean checkIfPairCorrect(char c1, char c2) {
    return pairs.get(c1) == c2;
}

09-13 05:42