Замена знаков

  • 12
  • Недоступна
Считать с консоли 2 имени файла. Первый Файл содержит текст. Считать содержимое первого файла и заменить все точки "." на знак "!". Результат вывести во второй файл. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (80)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Михаил Клименко19 уровень, Краснодар
12 сентября, 17:48
Всего эту задачу решили 15882 учеников. Сначала попробовал через split("\\.") разбить строку, потом собрать новую строку и в конце прибавить "!" + "\n". Но Вале не понравилось, в итоге сделал через replaceAll
Alukard24 уровень, London
21 августа, 21:54
если байт не равен точке пишем в файл если байт равен точке записываем воскл.знак Решение 20 строк заняло Первое что в голову пришло. код тут GitHub
Александр20 уровень, Могилев
15 августа, 10:06
ребята!!! решение через POSIX и || просто изюм!!! очень красиво получается и отдельное моральное удовлетворение, если разобраться с POSIX POSIX
Максим Русяев22 уровень, Саранск
30 апреля, 19:02
Похоже зрение посадил, вместо замены на восклицательный знак(!), меняю на косую черту(/)
Андрей28 уровень, Москва
28 мая, 15:00
А я вместо точки, менял запятую:)
Игорь Birt19 уровень, Тирасполь
25 июля, 09:31
а я вместо точки меняю ЛЮБОЙ символ )) (не экранирую точку)
Сергей19 уровень, Киев
четверг, 20:40
А я вообще на знак вопроса менял((
Фантомас31 уровень, Киев
20 февраля, 13:16
Пара нюансов из этой задачи. 1. Если использовать метод replace(), то указывать нужно конкретно сам символ:
writeToFile.write(readFile.readLine().replace(".", "!") + "\n");
2. Если использовать метод replaceAll(), то он работает с регулярками:
writeToFile.write(readFile.readLine().replaceAll("\\.", "\\!") + "\n");
Игорь Birt19 уровень, Тирасполь
25 июля, 09:33
В первом случае замена произойдет только для первой найденной точки во всей строке, нет?!
space.trueper19 уровень, Москва
11 августа, 16:32
а зачем перенос строки?
Sherlock040420 уровень, Москва
14 августа, 17:39
Спасибо, очень помогли)))
Artem19 уровень, Москва
3 сентября, 13:45
Нет, replace заменит все вхождения конкретного выражения в строке на новое. Кажется разница только в работе, регулярки или обычные выражения.
Mister S19 уровень
21 сентября, 17:56
А ничего, что последняя записанная строка сделает дополнительный перевод строки? И результирующий файл будет иметь на одну строку больше исходного?
almariel122 уровень, Москва
23 января, 12:55
Кто-нибудь знает, через FileReader есть способ подсчитать количество символов в файле, чтобы, например, массив для буфера создать? По аналогии с методом available() FileInputStreamReader?
Игорь Birt19 уровень, Тирасполь
25 июля, 09:34
Хороший вопрос, тоже жду ответа, спасибо!
Alexander Kolesnik20 уровень, Москва
30 августа, 21:07
что мешает использовать ArrayList? Не для того ли его придумали!?)
omat_kisat22 уровень, MIPS Assembly
2 октября 2019, 12:45
Ахахах, хорошая шутка, спасибо, ДжаваРаш! Кто не эскейпнул точку и все заменил на восклицательные знаки, с вас пятюня!
Мишаня25 уровень
2 июня 2019, 18:22
у меня какая то хрень с IntelliJ IDEA.может было у кого, решил как обычно там задачу делаю на проверку а пишет все пункты не правильные, потыкал просмотрел скопировал код, сбросил задание вставил код, тоже самое, нажал вопрос для помощи у народа, а там левый код из древних задач стоит и хер пойми как он попал туда) пришлось через сайт на проверку отправить и все прошло, а что с идеей не так?)
Aleks24 уровень
12 мая 2019, 17:13
Всё, конечно, хорошо работает, заменяет через "replaceAll" , но только русские буквы игнорирует! Пишет только английские и символы, не понятно что за ерунда. Да, и ещё почему то не хочет нормально писать в Word, при открытии выдаёт ошибку! Случается у кого нибудь такое?
Anton Rymarenko41 уровень
5 июня 2019, 18:10
+1,можно конструктором в бафферрайтер и ридер писать уникод,тогда должно работать четко, у меня с файлутстримом не получилось .BufferedReader r = new BufferedReader(new InputStreamReader(fileName, "Cp1251"));
Aleksei Dobrovolskii23 уровень, Уссурийск
27 февраля 2019, 05:14
Решается в одну строчку (ну.. почти:))
fileWriter.write(fileReader.readLine().replaceAll("\\.", "!"));
Yaroslav Tolstik31 уровень, Минск
26 марта 2019, 17:57
))))
AlexEremenko35 уровень, Омск
8 мая 2019, 18:35
Да, в вашем варианте принимает, а если написать вот так:
line = fileReader.readLine();
line.replaceAll("\\.", "!");
fileWriter.write(line);
то не принимает...
Антон24 уровень, Пермь
4 июня 2019, 17:13
//2 строка должна принять измененную строку, как то вот так:
line = line.replaceAll("\\.", "!");

//или так
line = line.replace('.', '!');
andy.v25 уровень, Tallinn
8 октября 2019, 20:06
или как вариант
output.write(input.lines().collect(Collectors.joining()).replace('.', '!'));
Alex39 уровень
15 января, 10:18
Thank you, kind man, I also forgot that the line is immutable!!!
Кирилл C.26 уровень, Санкт-Петербург
30 марта, 19:05
I know that you feeling, bro...
xodavit28 уровень, Москва
24 апреля, 12:06
вот у меня не работает ".", если пишу "\."ошибка подсвечивается, приходится писать "\\.", так вот объясните мне почему 2 обратных слеша? ведь обычно так мы экранируем слеши в путях, типа если 1, то будет считать системным, ставим 2 чтоб джава поняла, что мы пишем 1 слеш. а тут 2 слеша экранируют точку, и я не понимаю. ведь без экранирования, т.е. т.к. "." идея не подсвечивает ошибку и тут я совсем запутался
xodavit28 уровень, Москва
24 апреля, 16:16
отвечу сам себе. "." Любой символ (может совпадать и с символами конца строки). Дополнительная обратная косая черта нужна для того, чтобы в результирующей строке с регулярным выражением была одна обратная косая черта. Символ «\» имеет специальное значение внутри строковых констант, а чтобы он означал именно символ обратной косой черты, его нужно написать два раза «\\».
Игорь Birt19 уровень, Тирасполь
25 июля, 09:36
в варианте "или так" разве не изменится только первая найденная в строке точка на восклицательный знак, а все остальные останутся точками, я не прав?
Mister S19 уровень
21 сентября, 18:06
Да, валидатор принимает это решение, но фактически при этом почемуто съедаются "переносы строк" и выходной файл не соответствует условию!