|
В поиске
103 / 51 / 17
Регистрация: 20.04.2014
Сообщений: 826
|
|||||||||||
Замена текста17.08.2016, 17:46. Показов 1146. Ответов 8
Метки нет (Все метки)
Подскажите как лучше производить замену одного текста на другой.
1 | текст 1 2 | текст 5 3 | текст 4 ... есть переменная string text = "[1] что нить еще [3] потом еще что нить [2]" Сейчас меняю через цикл
Работает так как надо но при Контейнер в более 300 уже ощутимо задумывается. При том что уже видно что все 300 переберать не надо когда в тексте всего 3 значения встретится. Есть ли способ по быстрее производить замену при том что я знаю что изменяемое место заключено в квадратные скобки [] Добавлено через 14 минут Есть еще идея через Split разобрать а потом собрать в обратном порядке var yty = text.Split(new char[] { '[',']' });
0
|
|||||||||||
| 17.08.2016, 17:46 | |
|
Ответы с готовыми решениями:
8
Замена текста Замена текста в строке Замена текста в pdf |
|
|
||||||
| 17.08.2016, 18:09 | ||||||
|
Попробуй так.
1
|
||||||
|
В поиске
103 / 51 / 17
Регистрация: 20.04.2014
Сообщений: 826
|
||||||
| 17.08.2016, 19:06 [ТС] | ||||||
|
diadiavova,
Странно по замерам вообще смешно получилось
00:00:00.0000087 00:00:00.0000292 00:00:00.0000087 00:00:00.0000323 00:00:00.0000051 00:00:00.0000410 00:00:00.0000056 При первом старте вообще 4839
0
|
||||||
|
|
|
| 17.08.2016, 20:25 | |
|
КВА696, ты упускаешь пару вещей, которые неплохо было бы иметь в виду. Ведь что ты написал вначале? Что использованный тобой алгоритм начинает тормозить при большом количестве элементов в словаре. Рискну предположить, что если при этом еще и текст будет достаточно большим, то тормоза будут еще более заметными. Почему так происходит? Да все очень просто: операция замены символов в тексте не такаю уж и дешевая и для того, чтобы ее осуществить надо проийтись по всему тексту. Теперь если у тебя в словаре туева хуча элементов, то эту операцию приходится выполнять для каждого из них, независимо от того, встречается он в тексте или нет.
Теперь рассмотрим, что происходит при использовании регулярного выражения. Из всего словаря используются только те элементы, которые реально встречаются в тексте, то есть весь словарь обходить не нужно. А текст обходится только один раз в любом случае. Таким образом, несмотря на то, что замена с помощью регулярки - несколько более ресурсоемкая операция чем простой реплейс(что и понятно), тем не менее при росте словаря и текста объем потребляемых ресурсов не будет расти лавинообразно. Таким образом тесты, проведенные на малых объемах, - некорректны. Я, конечно, не утверждаю, что этот способ тебе подойдет, но в теории - должен.
1
|
|
|
В поиске
103 / 51 / 17
Регистрация: 20.04.2014
Сообщений: 826
|
||||||
| 17.08.2016, 20:41 [ТС] | ||||||
|
diadiavova,
Наверно всеже я гдето замеряю не правильно но даже при
старт программы 00:00:00.0027058 00:00:00.0189529 потом по нажатию на кнопку (почему то цифры кардинально меняются по сравнению со стартом программы) 00:00:00.0022353 00:00:00.0012977 00:00:00.0021465 00:00:00.0012669 Уточню. В выложеном примере сопоставления по времени мой случай не перебирать все элементы Dictionary<string, string> dict а разбиваю text.Split(new char[] { '[', ']' });
0
|
||||||
|
|
||
| 17.08.2016, 20:47 | ||
|
1
|
||
|
В поиске
103 / 51 / 17
Регистрация: 20.04.2014
Сообщений: 826
|
|
| 17.08.2016, 21:06 [ТС] | |
|
Если интересно то dict увеличил до 30
а текст типо Кликните здесь для просмотра всего текста
[1] что нить еще [3] потом еще что нить [2][4]
[1] что нить еще [3] потом еще что нить [2] [5] что нить еще [6] потом [10]еще что нить [9][8] [7][11] что нить еще [13] потом еще что нить [12][14] [11] что нить еще [13] потом еще что нить [12] [15] что нить еще [16] потом [20]еще что нить [19][18] [17][21] что нить еще [23] потом еще что нить [22][24] [21] что нить еще [23] потом еще что нить [22] [25] что нить еще [26] потом [30]еще что нить [29][28] [7][11] что нить еще [23] потом еще что нить [22][24] [11] что нить еще [13] потом еще что нить [12] [15] что нить еще [16] потом [20]еще что нить [19][18] [1] что нить еще [3] потом еще что нить [2][4] [1] что нить еще [3] потом еще что нить [2] ... 2687 строк 00:00:00.0297785 00:00:00.0060896 00:00:00.0111524 00:00:00.0200269 00:00:00.0140440 00:00:00.0067926 00:00:00.0143781 00:00:00.0082669 00:00:00.0159289 00:00:00.0067002 Я вот только понять не могу почему при первом просчете в обоих случаях время выходит больше чем при последующих.
0
|
|
|
|
|||
| 17.08.2016, 22:00 | |||
|
0
|
|||
|
burning1ife
|
|
| 19.08.2016, 01:12 | |
|
Есть вот такое решение:
http://www.codeproject.com/Art... -in-Csharp
1
|
|
| 19.08.2016, 01:12 | |
|
Помогаю со студенческими работами здесь
9
Замена текста по закладке Замена текста в строке
Замена текста в файле Замена текста в файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|