以字符串去除特定字符这个例子来解释:
import java.util.*;
public class 字符串去除特定字符 {public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
List<Character> list = new ArrayList<>();
while (input.hasNext()) {
String str1 = input.nextLine();
String str2 = input.nextLine();
char ch = str2.charAt(0);
for (int i = 0; i < str1.length(); i++) {
list.add(str1.charAt(i));
}
// 方法1:for (int i = list.size()-1; i >=0; i--) {
// list的remove从后面,从前面要i--,从后面遍历不用考虑,因为移除一个后size-1,并不会影响到前面元素的坐标
// if (list.get(i) == ch)
// list.remove(i);
// }
for(int i=0;i<list.size();i++) {
if(list.get(i)==ch) {
list.remove(i);
i--;
//从前面遍历移除一个,i--,因为移除一个之后list容器size-1,所以后面的一个元素之前的下标是i+1就变成i了,如果不i-- //就会跳过当前移除元素后面的元素,而是下一个的下一个 l例如
//字符串abbd
//字符b
//会输出abd
//字符串abbbbd
//字符b
//会输出abbd
}
for (char e : list)
System.out.print(e);
System.out.println();
list.clear();
}
}
}
当然,此题这个例子使用replaceAll(ch,"")后者StringBuffer s = new StringBuffer()更方便.
String str = scan.nextLine();
String c = scan.nextLine();
System.out.println(str.replaceAll(c,
""
));
------------------------------------------------------------
String str = scan.nextLine();
StringBuffer stb =
new
StringBuffer();
String st = scan.nextLine();
for
(
int
i=
0
;i<str.length();i++){
if
(str.charAt(i)!=st.charAt(
0
))
stb.append(str.charAt(i));
}
System.out.println(stb);