Люди, подскажите если знаете ответ.
Задача в следующем:
К примеру есть строка "word, 1word, wordy, word"
мне необходимо заменить слово ''word' в этой строке на new,
должно плучиться "new, 1word, wordy, new"
Поясню, слово которое заменится не должно быть частью другого слова.
пока разбираюсь с Regex, но то что требуется пока не получается.
желательно на С# если можно
Для реальных строк надо создать массив разделителей char[] и собирать в строку StringBuilder, идя по исходной, с подстановкой соответствующих сепараторов.
PS. Кто постит одно и то же в разных местах, получает подарки от модератора.
string[] words = sourceString.Split(new string[] { separator }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < words.Length; i++) if (words[i] == oldWord) words[i] = newWord;
Advanced member
Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
sashar2 писал(а):
Стиль программы имхо можно улучшить
Нет предела совершенству
sashar2 писал(а):
использование "\n" вобще в C# не рекомендуется впринципе
В данном случае - безусловно. Но если текст большой, сепараторов много, текст, пробелы и прочие сепараторы нужно оставить как было, то однозначно надо тспользовать класс StringBuilder - код будет быстрее в ТЫСЯЧИ раз обычных операций со строками, конкатенациями и пр., что на больших текстах сразу будет заметно. На версиях Net 3.x, правда, я не тестировал. А собирая весь текст в одну строку типа StringBuilder, никак не обойтись без проклятого "\n", или utf варианта, как бы кто не рекомендовал .
Advanced member
Статус: Не в сети Регистрация: 16.11.2006 Откуда: Всегда!
sashar2 писал(а):
А по какой причине нельзя использовать Environment.NewLine ?
Я говорил о вполне конкретных задачах, например, пару лет назад писал редактор с подсветкой синтаксиса. Естественно, используется rtf по его спецификации. Дальше надо объяснять?
Традиционно подобные редакторы перелопачивают все лексемы, и хотя трудно представить многомегабайтные файлы-исходники (не суммарно, а отдельным модулем), тем не менее, для очень больших кусков будет чувствоваться задержка. А на C# без использования класса StringBuilder это вообще, для больших текстов, нереально. Мой редактор делал поиск только для того куска, который виден в окне просмотра (реально, конечно, просматривался и весь текст в поисках, к примеру, открытых символов комментирования, чтобы правильно отобразить в этом случае).
sashar2 писал(а):
Насчет скорости в данной ситуации см. тест
Не совсем корректные тесты.
Я бы сослался, к примеру, на статью http://www.chinhdo.com/20070929/stringbuilder-part-2/ , там для конкатенации небольшое исследование, в том чисте и для инетчиков будет интересно про литералы.
zauropod Соглашусь с вами, что говорим о разных областях Я лишь хотел показать, что StringBuilder в конкретной задаче не является чем-то, что обеспечивает большой перевес во времени.
P.S>
По моему мы разошлись, настало время остановиться. Исходного кода для товарища -=Barmalei=- должно хватить
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения