java和mysql中考虑使用正则表达式来简化代码
正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。
使用正则可以大大简洁校验、逻辑代码:
如:以下问题,将字符串中非英文字母的字符当做分割符,分割字符串,倒序输出分割后的字符串
1.要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
2.非构成单词的字符均视为单词间隔符;
3.不使用正则的代码:
public static void main(String[] args) { // 英文大小写处理 String words = "abcdefghijklmnopqrstuvwxyz"; words = words + words.toUpperCase(); Scanner sc = new Scanner(System.in); String strIn = sc.nextLine(); List<Character> chars = new ArrayList<Character>(); // 其他字符处理为空格 for (int i = 0; i < strIn.length(); i++) { if(words.indexOf(strIn.substring(i,i+1)) < 0){ chars.add(' '); } else { chars.add(strIn.charAt(i)); } } // 去相邻多个空格 String strHandle = ""; for (int i = 0; i < chars.size(); i++) { if(!(i > 0 && String.valueOf(chars.get(i)).equals(" ") && String.valueOf(chars.get(i-1)).equals(" "))){ strHandle = strHandle + chars.get(i); } } strHandle = strHandle.trim(); List<String> list = Arrays.asList(strHandle.split(" ")); StringBuffer sb = new StringBuffer(); for (int i = 0; i < list.size(); i++) { sb.append(list.get(list.size() - i - 1)); if(i < list.size() -1){ sb.append(" "); } } System.out.println(sb); }
4.使用正则的代码:
public static void main(String[] args) { Scanner sc = new Scanner(System.in); // ^[a-zA-Z]是去匹配目标字符串中以中括号中的a—z或者A—Z开头的字符 // [^a-zA-Z]是去匹配目标字符串中非a—z也非A—Z的字符 String[] sp = sc.nextLine().split("[^a-zA-Z]+"); StringBuilder sb = new StringBuilder(); for (int i = sp.length - 1; i >= 0; i--) sb.append(sp[i] + " "); System.out.println(sb.toString().trim()); sc.close(); }
参考链接:https://www.zhihu.com/question/48219401/answer/742444326
浙公网安备 33010602011771号