您的位置:首页 > 编程语言 > Java开发

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

2009-04-17 15:29 501 查看
将字符串两边的空格(包括全角和半角)去掉,字符串内部的空格不能去。



本人曾经试图不使用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 正则表达式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: