замена регулярки в строке

yemets63
Дата: 07.01.2020 14:33:40
возник спор у студентов, что лучше, и как, версия Delphi XE10

надо заменить все слова в тексте на Null если к ним привязаны цифры

Строка = "
Слово, Слова, слов, 1 4 , 3 2
Слово1 Слово2, Слово3 Слово4, Слово5, Слово6
Слово, Слова, слов, 5 4, 3 , 2
"
должно получится
Строка = "
Слово, Слова, слов, 1 4 , 3 2
1 2, 3 4, 5, 6
Слово, Слова, слов, 5 4, 3 , 2
"

и так что лучше

1. replacestr(replacestr(replacestr(replacestr(replacestr(replacestr(Variable,'Слово1',1),'Слово2',2) - и.т.д. когда мы знаем всю строку и не так много заменять
2. цикл, который выискивает Слова с цифрами и чистит текст
3. замены через регулярные выражения, Uses System.RegularExpressions;
Dimitry Sibiryakov
Дата: 07.01.2020 14:55:00

yemets63
и так что лучше

Сначала надо устроить спор о критерии "лучшести".

Posted via ActualForum NNTP Server 1.5

yemets63
Дата: 07.01.2020 15:11:43
Dimitry Sibiryakov,

завтра посмотрю, что покажут
Dimitry Sibiryakov
Дата: 07.01.2020 15:22:51

Первое - лучше для понимания "как делать не надо и почему".
Второе - лучше для опыта и быстродействия.
Третье - для лучше компактности и нечитаемости кода.

Posted via ActualForum NNTP Server 1.5

alekcvp
Дата: 07.01.2020 17:31:45
Dimitry Sibiryakov

Первое - лучше для понимания "как делать не надо и почему".
Второе - лучше для опыта и быстродействия.
Третье - для лучше компактности и нечитаемости кода.

Я бы сказал что третье - лучше для универсальности. Завтра вам надо будет удалить не слова с цифрами, а слова с котиками - в третьем случае надо будет только шаблон поменять. А во втором?..
Dimitry Sibiryakov
Дата: 07.01.2020 17:40:33

alekcvp
А во втором?..

То же самое. Разница только в парсере.

Posted via ActualForum NNTP Server 1.5

Василий 2
Дата: 09.01.2020 15:56:38
+ к п.3. Регулярку можно и в конфиг вынести. Однако составлять ее надо очень внимательно, чтобы исключить ложные срабатывания
kealon(Ruslan)
Дата: 09.01.2020 17:21:40
yemets63,

в плане скорости:
железно лучше, отдельно построенный автомат (ДКА)
сравнимо к нему может приблизиться только 2-е, так как зависит от программиста реализующего его

3-е было бы тоже самое, если бы не реализация через НКА
1-е может обогнать при единичной замене как вы и написали
softwarer
Дата: 09.01.2020 20:37:55
yemets63
надо заменить все слова в тексте на Null если к ним привязаны цифры

Что должно получиться для

Строка = 'Слово123 Слово1Слово2___Слово3'
                    
Dimitry Sibiryakov
Дата: 09.01.2020 21:02:27

Мне тут пришло в голову, что эту задачу можно решить за один проход, то бишь O(N).

Posted via ActualForum NNTP Server 1.5