public class StringBufferTest { /**
* @param args
*/
public static void main(String[] args) {
StringBuffer str = new StringBuffer(" abc ee ssss ");
System.out.println(str.toString() + '.');
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) <= ' ') {
str.deleteCharAt(i);
}
}
System.out.println(str.toString() + '.');
}}显示结果如下:
abc ee ssss .
abcee ssss .当有多个空格时只删了其中一部分?
* @param args
*/
public static void main(String[] args) {
StringBuffer str = new StringBuffer(" abc ee ssss ");
System.out.println(str.toString() + '.');
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) <= ' ') {
str.deleteCharAt(i);
}
}
System.out.println(str.toString() + '.');
}}显示结果如下:
abc ee ssss .
abcee ssss .当有多个空格时只删了其中一部分?
当你删除当前i处的空格时,后边的字符会向前移动一个字符,这样:当前已被删的空格的下一个空格其实已经移到你的i处了,但你的循环已回上去,i++了,这样:这个空格就成漏网之鱼了.
因此:代码可改为如下:
方法一:循环从串的右边向左边循环
方法二:你的原来的代码:str.deleteCharAt(i); 之后加上:i--;就行了.