|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Всем привет! Столкнулся с тем, что мой код поиска массива в массиве медленно работает, может кто уже делал такое и сможет мне помочь. Суть такова, есть массив текста из которого нужно выцепить текст (текст в виде массива). Пример Тест : ***** ИСКОМОЕ СЛОВО1 ***** ***** **** ******** **** ***** ИСКОМОЕ СЛОВО2 ***** ***** **** ******** **** ***** ИСКОМОЕ СЛОВО3 ***** ***** **** ******** **** Массив слов: ИСКОМОЕ СЛОВО1 ИСКОМОЕ СЛОВО2 ИСКОМОЕ СЛОВО3 результат работы поиска: ***** ИСКОМОЕ СЛОВО1 ***** ***** **** ******** **** => ИСКОМОЕ СЛОВО1 ... думаю понятно. Задачу решил просты перебором, все бы ничего, но как только кол-во строк переваливает за 10 000 и кол-во искомых слов за 1000, то ждать приходится достаточно долго. Может у кого есть более быстрый алгоритм? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:42 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
код в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:46 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
А какой тут в пень алгоритм, если всё равно надо сравнить каждый элемент первого массива с каждым элементом второго? разве что искать быстрый алгоритм поиска подстроки в строке - но это без внешней библиотеки с такой функцией мне представляется сомнительным. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 14:12 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
вангую, там у ТС с конкатенацией строк тормоза скорее всего ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 14:14 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Просто может можно как-то через ВПР искать, думается, что должен быстрее работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 14:22 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
у вас Excel что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 14:38 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Konst_One, ДА, специфика деятельности.. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 15:07 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
выкладывайте код, тут кто-нибудь и по Excel подскажет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 15:14 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
kos20, раз Excel, то на вскидку можно через словари чуть ускорить. Забираем диапазоны в массив одним махом, один загоняем в словарь, а циклом по другому уже смотрим в словаре совпадения. Но без файла и примера кода можно только предполагать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 16:35 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
kos20, может так, с одним явным циклом Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 21:07 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
попробуйте регулярные выражения через "или" запишите все варианты слов поиска ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 08:48 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Казанскийkos20, может так, с одним явным циклом Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Спасибо, работает в разы быстрее!!! А можно ли переписать код чтобы не Replace а как-то искал в Columns(1), а результат выдавал в Columns(2)? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 10:59 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
kos20, если хотите получить оптимальный код, приложите файл килобайт на 100 с частью данных. Если использовать Replace, надо скопировать столбец текста в столбец результата и обрабатывать его: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Что должно быть в столбце результата, если в тексте нет ни одного искомого слова? Replace ессно оставит исходный текст. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 11:24 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Казанский, Спасибо огромное, реально быстро работает, раз в 1000х (не шучу)... С копированием была идея но думал, может есть другие оптимальные решения... Думаю, что тема закрыта. Спасибо всем. Пойду создам следующую;))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 11:35 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Казанскийkos20, если хотите получить оптимальный код, приложите файл килобайт на 100 с частью данных. Если использовать Replace, надо скопировать столбец текста в столбец результата и обрабатывать его: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Что должно быть в столбце результата, если в тексте нет ни одного искомого слова? Replace ессно оставит исходный текст. А как удалить те, которые не менялись? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:18 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Еще разКазанскийkos20, если хотите получить оптимальный код, приложите файл килобайт на 100 с частью данных ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 22:52 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
КазанскийЕще разКазанскийkos20, если хотите получить оптимальный код, приложите файл килобайт на 100 с частью данных Вот небольшой пример... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 09:50 |
|
Поиск текста в тексте
|
|||
---|---|---|---|
#18+
Казанский, ну вот как-то так наверно. Если есть замечания, велкам... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 23:35 |
|
|
start [/forum/topic.php?fid=60&msg=39163370&tid=2155632]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 167ms |
0 / 0 |