Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 39

Замена подстроки

16.11.2019, 20:00. Показов 912. Ответов 1

Студворк — интернет-сервис помощи студентам
Необходимо изменить строку согласно следующим правилам:
1) если в строке встречается шаблон $!...!$ заменить на #...
шаблон начинается символами $! и заканчивается первым вхождением символов !$, к примеру строка $!...!$...!$ примет вид #......!$, а строка $!...$!...!$ примет вид #...$!...
2) если внутри данного шаблона присутствует символ '@', например $!...@...@...@!$ заменить на &...^...^...^&
3) если в строке встречается только символы начала шаблона $! или только символы окончания шаблона !$ оставляем текст без изменений
4) символ '@' встречающейся вне шаблона остается без изменений

Строка для примера: "$!It@!$ was Charles Darwin, $!born!$ at Shrewsbury @on the 12th of $! February, 1809!$, who showed that this was just a legend. As a boy Darwin loved $!@to walk @in the @countryside!$, collecting @insects, flowers and minerals."

Результат: "&It^& was Charles Darwin, #born at Shrewsbury @on the 12th of # February, 1809, who showed that this was just a legend. As a boy Darwin loved &^to walk ^in the ^countryside&, collecting @insects, flowers and minerals."

Пока сделал так:
Прохожу в цикле по строке, если встретилось начало шаблона запоминаю индекс, иду дальше, если до конца шаблона встретился символ '@' меняю флаг на true, и при нахождении конца шаблона запоминаю следующий индекс. Далее в зависимости от флага заменяю, сбрасываю индексы и флаг и иду дальше в цикле до конца строки. Но получилось слишком громоздко. Может кто-нибудь подскажет решение с помощью стримов и(или) регулярок.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2019, 20:00
Ответы с готовыми решениями:

Замена подстроки в тексте, считываемом из файла
В общем-то у меня есть куча файлов, в которых указан путь до одной папки. В каждом файле мне нужно заменить этот путь на новый. Я буквально...

Замена подстроки в файле
Я построчно считываю строки из file. После этого если нахожу в ней подстроку заменяю её. Но проблема в том, что когда я делаю...

Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку
Выполнить поиск подстроки внутри данной строки,замену найденной подстроки на другую строку Пример Исходная строка: aaaabbbaaa ...

1
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
18.11.2019, 18:50
Регулярные выражения, пособие для новичков. Часть 1
https://habr.com/ru/post/267205/
Регулярные выражения, пособие для новичков. Часть 1(перевод)
https://habr.com/ru/post/115825/
Регулярные выражения для новичков
https://tproger.ru/articles/regexp-for-beginners/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2019, 18:50
Помогаю со студенческими работами здесь

Замена подстроки
Проблема: в текстовом конфиге программы при сбоях слетает одно из значений параметра, нужно его восстановить. // Пример корявого...

Замена подстроки
Имеется массивы строк wstring. В первом массиве искомые подстроки, во втором подстроки замены. Как воспользоваться методом replace для...

Замена подстроки
Здравствуйте.Подскажите как заменить подстороку в строке такого вида $a = "(число1,число2,'разные символы'),(число3,число4,'разные...

Замена подстроки
Всем привет!!! Не могу что-то сообразить как сделать замену подстроки на определенную строку. Допустим, имеется файл с множеством строк...

Замена подстроки
Изменить "ФИО" студента. Поиск по "ФИО" (старое и новое "ФИО" студента необходимо ввести с клавиатуры). Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru