用java自己实现String类的trim()方法功能

  用java自己实现String类的trim()方法功能

  我们都知道String类中的trim()方法的功能在于:“返回字符串的副本,其中该副本忽略前导空白和尾部空白。”(这是api的定义)。现在本博文将自己实现String类的trim()的功能,算是属于一个小算法吧!

  我的思路是这样的:设置两个跑标p1,p2置于字符数组(可由字符串的toCharArray()方法获取)的首,尾,p1需要做的事情:从首到尾找出字符串首部第一次不为空格' '的字符所在的位置pos1;同样的道理,p2需要做的事情:从尾到首找出字符串尾部第一次不为空格' '的字符所在的位置pos2。这样子就确定了该字符串的首尾中去掉了空格 ' ' 的位置pos1,pos2,最后采用字符串的subString(int p1,int p2)进行进行截取即可,其中需要将subString(p1,p2)改为subString(p1,p2+1);

  下面是代码

/**
 * 仿写String的 trim()方法
 * @author zhonglinsen
 * 2016-3-1 下午
 */
public class StringExer {
	public static void main(String[] args) {
		String str1="abcdfef dfsd";
		String str2="  abcd fd";
		String str3="adbc fd  ";
		String str4="  fdf fdfd   ";
		String str5="       ";
		
		//System.out.println(testTrim(str1));
		//System.out.println(testTrim(str2));
		//System.out.println(testTrim(str3));
		//System.out.println(testTrim(str4));
		System.out.println(testTrim(str5));
		
	}
	
	/**
	 * 仿照String的trim()
	 * @param strArg:需要进行去掉前后空格符的字符串
	 * @return:返回字符串的副本,该副本进行去掉了首尾空格符
	 */
	public static String testTrim(String strArg){
		
		char[] cVal=strArg.toCharArray();
		int p1=0;
		int len=cVal.length;
		
		//从首到尾进行遍历,如果发现了第一个不是  ' ' 就break:表示终止了遍历,找到了首部到尾部第一个不为 ' ' 的位置
		while(p1 < len){
			if (cVal[p1] == ' ') {
				p1 += 1;
			}else{
				break;
			}
		}
		
		//这说明  strArg 压根就是由空格字符组成的字符串
		if (p1 == len) {
			return "";
		}
		
		//从尾部到首部进行遍历,如果发现了第一个不是  ' ' 就break:表示终止了遍历,找到了尾部到首部第一个不为 ' ' 的位置
		int p2=len-1;
		while(p2 >= 0){
			if (cVal[p2] == ' ') {
				p2 -= 1;
			}else{
				break;
			}
		}
		
		String subStr=strArg.substring(p1,p2+1);
		return subStr;
	}
}

  结果很明显是实现了该功能,或许有可以进行优化的地方,欢迎留言与我讨论交流!

 


你可能感兴趣的:(算法与数据结构,java)