Удаление символов из строки java

268
04 февраля 2018, 00:57

Есть список ненужных символов, допустим String taboo = "1234567890!@#$%^&*()_+!№;%:?*/\\\"~";`

И есть строка String s = sc.nextLine();

Как из вводимой строки удалить(заменить пробелами) все символы, которые есть в списке taboo?

Answer 1
public class Main {
    public static void main(String[] args) {
        String taboo = "1234567890!@#$%^&*()_+!№;%:?*/\\\"~";
        String s = "Hello123World!?!.?!";
        for (char c : taboo.toCharArray()) {
            s = s.replace(c, ' ');
        }
        System.out.println(s);
    }
}
Answer 2

Можно воспользоваться следующим методом из библиотеки Apache Commons: StringUtils.replaceChars(String str, String searchChars, String replaceChar).

Answer 3

Если вы читаете текст построчно и этот текст достаточно длинный, то, возможно есть смысл сделать таким образом:

public static void main(String[] args) {
    String taboo = "1234567890!@#$%^&*()_+!№;%:?*/\\\"~";
    Set<Character> symbols = taboo.chars().mapToObj(e->(char)e).collect(Collectors.toSet());
    StringBuilder result = new StringBuilder();

    String s = "Hello123World!?!.?!";
    result.append(delSymbols(s, symbols));

    System.out.println(result);
}
private static StringBuilder delSymbols(String nextString, Set<Character> symbols){
    StringBuilder sb = new StringBuilder();
    for (char ch : nextString.toCharArray()) {
        if (!symbols.contains(ch)) sb.append(ch);
    }
    return sb.append("\r\n");
}

Две строки кода в средине метода main - это ваш цикл. В итоге на выходе вы получите объект StringBuilder в данном контексте именованный как result.

В этом случае приходится создавать дополнительную коллекцию типа сет, однако при большом объеме текста использование этой коллекции и StringBuilder должно окупиться и с точки зрения времени выполнения, и с точки зрения системных ресурсов.

Попробуйте протестировать на время в реальных условиях, выложите результат. Мне тоже интересно.

Answer 4

taboo.replaceAll(было, стало);

READ ALSO
Создание объектов с одного класса в другом

Создание объектов с одного класса в другом

Здравствуйте, можно ли как-то унаследовать форму JFrame создавая на нем новые объекты не закрывая и не создавая его каждый разТо есть есть у меня...

283
Отображение данных в RecyclerView

Отображение данных в RecyclerView

Есть вот такой Json http://samplesopenweathermap

236
Правильное подключение к БД

Правильное подключение к БД

Задача вот в чем -- нужно вставить в таблицу (например) 10000 строкЧерез ExecutorService сделал чтобы каждая строка вставлялась в отдельном потоке

211
Округление double по школьным правилам

Округление double по школьным правилам

Как добиться правильного "школьного" округления?

173