Как заменить несколько элементов в списке? - PullRequest
3 голосов
/ 26 октября 2011

Я добавил несколько символов в список для замены в строке. Вот они:

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, "");

Конечно, я не могу этого сделать, потому что список НЕ является строкой. Но что я могу сделать вместо этого?

РЕДАКТИРОВАТЬ, так что если

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

Я хочу, чтобы список распознал, что он содержит ";" и "!", и замените эти символы в строке String ничем. Таким образом, результат будет:

"I am cool not good"

Ответы [ 3 ]

5 голосов
/ 26 октября 2011

Вместо использования List<Character> я бы использовал регулярное выражение:

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

Если вам абсолютно необходимо определить свои символы в списке, сначала преобразуйте список в такое регулярное выражение.

1 голос
/ 30 января 2012

проверить Apache Commons StringUtils.replaceEach ((Текст строки, Строка [] searchList, String [] replaceList)) это позволит вам предоставить список значений для поиска и список связанных замен в одной строке.

Примечание : это вызовет исключение IndexOutOfBoundsException, если длины массивов поиска и замены не совпадают

1 голос
/ 26 октября 2011

Вместо List, почему бы не использовать регулярное выражение.В противном случае вы можете столкнуться с чем-то вроде:

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

myString = mySB.toString();
...