在处理文本时会遇到提取括号中的内容。如下文本:
根据《工业和信息化部关于印发电话用户真实身份信息登记实施规范的通知》(工信部网安〔2018〕105号)
要求提取出成对符号中的内容。提取后内容如下:
{“括号内容3”:"(工信部网安〔2018〕105号)",“括号内容2”:"〔2018〕",“括号内容1”:"《工业和信息化部关于印发电话用户真实身份信息登记实施规范的通知》"}
具体如何操作先看思路:
1.遍历字符串
1.只要有左括号就算有内容 ->不完整内容
2.只要有右括号且检查是否有左括号(成对括号出现) 有左括号就算完整的内容
具体Java代码实现:
/**
* 括号是否成对出现
* 利用栈的先进后出特性来判断字符串的符合是否成对出现
* 出现一次左边的进栈,出现一次右边的出栈,栈最终为空即为成对出现
* @param text
* @return
*/
public static boolean isSymbolTwin(String text){
//定义左右括号关系
Map<Character,Character> bracket = new HashMap<>();
bracket.put(')','(');
bracket.put(']','[');
bracket.put('}','{');
bracket.put('】','【');
bracket.put(')','(');
bracket.put('》','《');
bracket.put('>','<');
bracket.put('〕','〔');
Stack stack = new Stack<>(); //定义栈
for (int i &#