用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;
}
}
结果很明显是实现了该功能,或许有可以进行优化的地方,欢迎留言与我讨论交流!