如何替换列表中的多个项目?

时间:2011-10-26 03:02:17

标签: java string list arraylist character

我在列表中添加了几个字符以替换字符串。他们在这里:

List<Character> list = new ArrayList<Character>();
list.add(',');
list.add('?');
list.add(',');
list.add(':');
list.add('-');
list.add('(');
list.add(')');
list.add(';');
list.add('/');

我想用字符串“s”替换列表中所有出现的字符。

s.replaceAll(list, "");

当然,我不能这样做,因为list不是字符串。但我能做些什么呢?

编辑,如果

String s = "I am cool; not good!";

我希望列表识别出它包含“;”和“!”,并在没有任何内容的情况下替换String s中的那些字符。结果将是:

"I am cool not good"

3 个答案:

答案 0 :(得分:5)

我不会使用List<Character>,而是使用正则表达式:

s.replaceAll("[,?:();/-]","");

如果绝对必须在List中定义字符,请先将List转换为此类正则表达式。

答案 1 :(得分:1)

而不是List为什么不使用正则表达式。否则你可能会遇到类似的问题:

StringBuilder mySB = new StringBuilder(myString);
for (Character myChar : list) {
  mySB.replace(String.valueOf(myChar), "");
}

myString = mySB.toString();

答案 2 :(得分:1)

查看Apache Commons StringUtils.replaceEach((String text, String[] searchList, String[] replacementList))它将允许您在一行中提供要搜索的值列表和相关替换列表。

注意:如果搜索和替换数组的长度不同,这将抛出IndexOutOfBoundsException