我正在编写一个示例应用程序,其中遇到了以下问题:
我必须检查字符的“兼容性”。
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;
}