Я не уверен, как это сделать. Итак, у меня есть строка под названием S и строка шаблона M. Мне нужно удалить все вхождения M в S. Но когда я удаляю одно вхождение M в S, я мог бы создать другое. Например, учитывая слово «aajjk» и образец «aj». После первого удаления это станет «ajk». В этой новой строке появилось другое появление «aj» после первого удаления. Конечная строка после всех удалений будет тогда «k». Не могли бы вы дать мне несколько советов о том, как подойти к этой проблеме, некоторые psuedocode будут полезны, поскольку мне нужна практика в реализации.Удаление шаблона из строки
ответ
В JS вы могли бы сделать что-то вроде этого:
function delPattern(patt, str) {
var res = str.replace(patt, "");
if(patt.test(res) == true) {
delPattern(patt, res);
} else {
console.log(res);
}
}
var str = "aajjk";
delPattern(/aj/g, str);
"PATT" это шаблон. Здесь «/aj/g». «g» означает глобальность, что каждый шаблон сопоставляется. С помощью функции «замените« вы замените свой узор на «». После этого вы спрашиваете, существует ли шаблон еще один раз «i f (patt.test (res) == true)». Если это так, повторите то же самое. Иначе дайте мне результат.
Упрощенный цикл, если выполнение замены приводит к другой строке. Псевдокод:
lastS = null
while(lastS != S)
lastS = S
S.replace(M, '')
Если вы хотите алгоритм линейного времени наихудший, то один подход заключается в построении конечного автомата, который принимает строки, оканчивающиеся на М (например, Кнут - Морриса - Пратта), а затем запустите этот псевдокод.
initialize a state stack to [initial state of the automaton]
initialize an empty character stack
for each character c in S:
let q be the top of the state stack
push delta(q, c) onto the state stack,
where delta is the transition function of the automaton
push c onto the character stack
if the top of the state stack is an accepting state:
pop length(M) values from both stacks
output the contents of the character stack
Привет, У меня есть некоторые разъяснения. Что такое функция перехода и что такое автомат? –
@PrashSom Существует целая литература по алгоритмам сопоставления строк, с которыми я предположил некоторое знакомство. –
- 1. Удаление первой строки каждого файла из шаблона?
- 2. удаление шаблона строки в .xls
- 3. удаление шаблона с конца строки
- 4. Удаление шаблона искомой строки из многострочной строки в Python
- 5. Удаление шаблона из имен файлов
- 6. Удаление чисел и символов из строки с использованием шаблона
- 7. Удаление стилей admin-bar.php из шаблона WordPress
- 8. Удаление строки из строки REGEX
- 9. Извлечение шаблона из строки
- 10. Удаление строки из массива
- 11. удаление символов из строки
- 12. Удаление пространства из строки
- 13. Удаление "" из строки
- 14. Удаление элементов из строки
- 15. Удаление строки из datatable
- 16. удаление строки из таблицы
- 17. Удаление пробелов из строки
- 18. Удаление дубликатов из строки
- 19. Удаление строки из таблицы
- 20. Удаление строки из таблицы
- 21. Удаление сегментов из строки
- 22. Удаление комментариев из строки
- 23. Удаление URL из строки
- 24. Удаление строки из списка
- 25. Удаление строки из таблицы
- 26. удаление строки из filename
- 27. Удаление пунктуации из строки
- 28. Удаление '\' из строки
- 29. Удаление дубликатов из строки
- 30. Удаление элементов из строки
Пожалуйста, не подвергайте вандализму свои вопросы; что делает ответы, которые люди тратят на время, значительно дешевле. – DSM