Java正则表达式 : 将字符串两边的空格(包括全角和半角)去掉,字符串内部的空格不能去】

将字符串两边的空格(包括全角和半角)去掉,字符串内部的空格不能去。

 

本人曾经试图不使用Java正则表达式,只使用 java.lang.String 中所提供的 API, 虽然能实现,不过要写一堆代码, 现将不使用 Java 正则表达式和使用 Java 正则表达式的代码写出,做个笔记。

 

A 不使用 Java正则表达式, 有点麻烦^_^

public class SpaceChecker { public static void main(String[] args) { String str = "  a  b  c  "; System.out.println(delSpace(str)); } public static String delSpace(String str) { if(str == null) { return null; } // 先将半角空格删除 str = str.trim(); while (str.startsWith(" ")) { // 只可惜String中没有提供replaceLast(), 否则就简单点了 // 所以本循环完成以后,只能将字符串前端的空格删除,却不能删除后端的空格 // 故而本循环完成后,又将字符串翻转后再去一次空格 str = str.replaceFirst(" ", ""); // 一定要 trim(), 不然的话,如果前端的空格是全角和半角相间的话,就搞不定了 str = str.trim(); } // 将字符串翻转 str = reverse(str); // 再去一次空格 while (str.startsWith(" ")) { str = str.replaceFirst(" ", ""); str = str.trim(); } // 最后再将字符串翻转回去 return str = reverse(str).trim(); } // 自定义的字符串翻转方法。 // 很多第三方的包的都有实现,但是 Java API 没有实现,这里自己实现一下 ^_^ public static String reverse(String str){ char[] charsOld = str.toCharArray(); char[] charsNew = new char[charsOld.length]; int index = charsOld.length-1; for (int i = 0; i < charsOld.length ; i++) { charsNew[i] = charsOld[index - i]; } return String.valueOf(charsNew); } }

B  使用 Java 正则表达式

public class SpaceChecker { public static void main(String[] args) throws Exception { SpaceCheck sc = new SpaceCheck(); String str = "  a  b  c  "; System.out.println(sc.delSpace(str)); } public String delSpace(String str) throws Exception { if (str == null) { return null; } String regStartSpace = "^[  ]*"; String regEndSpace = "[  ]*$"; // 连续两个 replaceAll // 第一个是去掉前端的空格, 第二个是去掉后端的空格 // 本来想一气呵成,但是未能实现 ^_^ String strDelSpace = str.replaceAll(regStartSpace, "").replaceAll(regEndSpace, ""); return strDelSpace; } }

 

 做个笔记, 记住要好好学习 Java 正则表达式。

你可能感兴趣的:(Java)