Есть список ненужных символов, допустим String taboo = "1234567890!@#$%^&*()_+!№;%:?*/\\\"~
";`
И есть строка String s = sc.nextLine();
Как из вводимой строки удалить(заменить пробелами) все символы, которые есть в списке taboo
?
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);
}
}
Можно воспользоваться следующим методом из библиотеки Apache Commons: StringUtils.replaceChars(String str, String searchChars, String replaceChar)
.
Если вы читаете текст построчно и этот текст достаточно длинный, то, возможно есть смысл сделать таким образом:
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 должно окупиться и с точки зрения времени выполнения, и с точки зрения системных ресурсов.
Попробуйте протестировать на время в реальных условиях, выложите результат. Мне тоже интересно.
taboo.replaceAll(было, стало);
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Здравствуйте, можно ли как-то унаследовать форму JFrame создавая на нем новые объекты не закрывая и не создавая его каждый разТо есть есть у меня...
Задача вот в чем -- нужно вставить в таблицу (например) 10000 строкЧерез ExecutorService сделал чтобы каждая строка вставлялась в отдельном потоке