新手求解:模拟一个trim功能一致的方法。去除字符串两端的空白

objectluo 2014-08-13 02:46:09
public class StringTest_4 {

public static void main(String[] args) {

String s=" ab c ";
String str=myTrim(s);
System.out.println("-"+str+"-");
}

public static String myTrim(String s) {

int start=0,end=s.length()-1;

while(start<=end && s.charAt(start)==' ')
{
start++;
}
while(start<=end && s.charAt(end)==' ')
{
end--;
}
return s.substring(start,end+1);
}
}

问题:s.substring(start,end+1)中的start,end是怎么得到的?为什么是end+1?求解
...全文
545 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
-阿克蒙德- 2014-08-13
  • 打赏
  • 举报
回复
引用 5 楼 objectluo 的回复:
你说的这个明白 while循环那里,那个start是变量, while判断为假时,start不再++了, 而此时start的值就是那个不为空格字符的索引 所以直接拿来用?
对啊,此时start的值就是0了 在论坛里,你要引用下我,我才能受到啊……就像我这样
objectluo 2014-08-13
  • 打赏
  • 举报
回复
你说的这个明白 while循环那里,那个start是变量, while判断为假时,start不再++了, 而此时start的值就是那个不为空格字符的索引 所以直接拿来用?
-阿克蒙德- 2014-08-13
  • 打赏
  • 举报
回复
"abc"你可以看个简化版本的s字符串,自己推导一下

int start=0,end=s.length()-1;   //start=0  end=2
s.substring(start,end);  // 结果ab
这样你明白否?
objectluo 2014-08-13
  • 打赏
  • 举报
回复
一开始start从0开始,然后判断第一个字符是否为空,如果为空,就++,这样就找到了第一个不为空的字符索引 end也一样 这个看懂了, 但是还是不明白 当while为假时,为什么不是把此时的字符索引返回,就直接用了?
shixitong 2014-08-13
  • 打赏
  • 举报
回复
一开始start从0开始,然后判断第一个字符是否为空,如果为空,就++,这样就找到了第一个不为空的字符索引 end也一样 为什么要+1,见上面的API
shixitong 2014-08-13
  • 打赏
  • 举报
回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧