Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 3
Регистрация: 22.06.2013
Сообщений: 168

Замена слова

31.01.2016, 22:01. Показов 921. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Имеется html-файл, в котором нужно заменить слово. Но проблема в следующем: я хочу заменить слово "РЭС" на слово "РТС", но вместе с ним, на "РТС" заменяется и часть слова "АРЭС", что мне не нужно. Как это лучше сделать?
Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
string str = string.Empty;
Encoding win1251 = Encoding.GetEncoding(1251);
    using (var reader = new StreamReader(@"C:\111.html", win1251))
    {
        str = reader.ReadToEnd();
    }
      str = str.Replace("РЭС", "РТС");
     using (var writer = new StreamWriter(@"C:\111.html", false, win1251))
    {
        writer.Write(str);
    }
    MessageBox.Show("Работа выполнена успешно!");
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2016, 22:01
Ответы с готовыми решениями:

Поиск определенного слова в строке и замена определенного символа после этого слова
Представим что у нас есть следующая строка: "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде 1...

Замена слова
Привет народ! Кто не спит, помогите, пожалуйста! В крации, нужно сделать замену слова. То есть: в программе имеется иное название -...

Замена слова в строке
Пробую заменить слово в строке вот так string s = "some_text or some-text or Text use text, read text or what text?"; ...

8
115 / 92 / 66
Регистрация: 27.04.2014
Сообщений: 307
31.01.2016, 22:03
Может так:
C#
1
str = str.Replace(" РЭС ", "РТС");
Возле РЭС добавить пробелы с двух сторон
1
1 / 1 / 3
Регистрация: 22.06.2013
Сообщений: 168
31.01.2016, 22:05  [ТС]
Я об этом думал, но слово "РЭС" в тексте в разных местах окружено и пробелами, и точками и запятыми, причем с разных сторон: " РЭС ";
" РЭС."; ", РЭС." и так далее
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
31.01.2016, 22:09
Цитата Сообщение от Tolyanych Посмотреть сообщение
Я об этом думал, но слово "РЭС" в тексте в разных местах окружено и пробелами, и точками и запятыми, причем с разных сторон: " РЭС ";
" РЭС."; ", РЭС." и так далее
Регулярные выражения для этого служат.
0
1 / 1 / 3
Регистрация: 22.06.2013
Сообщений: 168
31.01.2016, 22:49  [ТС]
Попробовал на простом примере, получилось. Но вот на таком не выходит - не меняет и все тут:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
string pathtofolder;
            
List <string> Poiskdlyazameny=new List<string>() {"РЭС","РПдУ"};
List <string> Nazamenu=new List<string>(){"<span title="Радиоэлектронные системы "> РЭС  </span>",
"<span title="Радиопередающее устройство "> РПдУ  </span>"};
 
void Button1Click(object sender, EventArgs e)
{
string str = string.Empty;
Encoding win1251 = Encoding.GetEncoding(1251);
   
using (var reader = new StreamReader(pathtofolder, win1251))
{
    str = reader.ReadToEnd();
}
    for(int i=0;i<Nazamenu.Count;i++)
    {
     // Строка что ищем
     string pattern = @"\b("+Poiskdlyazameny[i]+")\b";
 
        // Строка на что меняем
        string replacement1 = Nazamenu[i];
        str = Regex.Replace(str, pattern, replacement1);
    }
 
    using (var writer = new StreamWriter(pathtofolder, false, win1251))
    {
        writer.Write(str);
    }
    
    MessageBox.Show("Работа выполнена успешно!");
        }
        void Button2Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            pathtofolder=openFileDialog1.FileName;
        }
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
31.01.2016, 23:16
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
           string input = @"Здравствуйте! РЭС  Имеется v РЭС html-файл, в котором нужно заменить слово. Но проблема в следующем: я хочу заменить слово ""РЭС"" на слово ""РТС"", но вместе с ним, на ""РТС"" заменяется и часть слова ""АРЭС"", что мне не нужно. Как это лучше сделать? Код: ";
 
            string pattern = @"(\WРЭС\W)";
            Regex reg = new Regex(pattern);
 
            // совпадения 
            Match match = reg.Match(input);
 
            // все совпадения
            while (match.Success)
            {
                match = match.NextMatch();
                var posLiter = match.Index;
 
                // а дальше ручками 
 
            }
0
1 / 1 / 3
Регистрация: 22.06.2013
Сообщений: 168
01.02.2016, 15:15  [ТС]
Но match это же просто возврат совпадений без замены?Я имею в виду что я только смогу матчем найти совпадения но не заменить их
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
01.02.2016, 15:22
Цитата Сообщение от Tolyanych Посмотреть сообщение
Но match это же просто возврат совпадений без замены?
Вы получите var posLiter = match.Index; индекс первого литера (шаблон) в исходном слове. А дальше ручками, или Вы не знаете как заменить слово зная его длинну и начало (про индексы).

Добавлено через 4 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 // добавим x перед UID
                // шаблон UID для поиска в строке
                string patternUID = @"(\S\w{8}-\w{4}-\w{4}-\w{4}-\w{8}\S)";
 
                // регуляркой ищем UID-ы
                Regex regex = new Regex(patternUID);
                Match match = regex.Match(sqlReqStr[i]);
 
                // вытаскиваем совпадения
                while (match.Success)
                {
                    // те UID что были найдены
                    var resss = match.Groups[0].Value;
                    match = match.NextMatch();
 
                    string replacement1 = string.Empty;
 
                    // проверим если в строке X уже вставлен то не вставляем его
                    if (!sqlReqStr[i].Contains("x"+ resss))
                    {
                        // удаляем -
                        replacement1 = "x" + resss.Remove(9, 1).Remove(13, 1).Remove(17, 1).Remove(21, 1);
 
                        // вторая группа удаляется без замены
                        sqlReqStr[i] = Regex.Replace(sqlReqStr[i], resss, replacement1);
                    }
                }
Вот держите пример замены UID - ов.
'004F6960-71AB-4D77-B3CB-12955B586BBF' на x'004F696071AB4D77B3CB12955B586BBF'
0
1 / 1 / 3
Регистрация: 22.06.2013
Сообщений: 168
02.02.2016, 06:45  [ТС]
Решил проблему проще:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
string pathtofolder;
        List <string> Poiskdlyazameny=new List<string>() {@"\b(РЭС)\b",@"\b(РПдУ)\b"};
        List <string> Nazamenu=new List<string>(){"<span title="Радиоэлектронные системы "> РЭС  </span>",
            "<span title="Радиопередающее устройство "> РПдУ  </span>"};
            void Button1Click(object sender, EventArgs e)
        {
            string str = string.Empty;
    Encoding win1251 = Encoding.GetEncoding(1251);
       using (var reader = new StreamReader(pathtofolder, win1251))
    {
        str = reader.ReadToEnd();
    }
    for(int i=0;i<Nazamenu.Count;i++)
    {
     // В шаблоне используются 2 группы
     string pattern = Poiskdlyazameny[i];
        string replacement1 = Nazamenu[i];
                                        // вторая группа удаляется без замены
        str = Regex.Replace(str, pattern, replacement1);
    }
    using (var writer = new StreamWriter(pathtofolder, false, win1251))
    {
        writer.Write(str);
    }
     MessageBox.Show("Работа выполнена успешно!");
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2016, 06:45
Помогаю со студенческими работами здесь

Замена цифр на слова
Помогите, пожалуйста, написать программу которая считывает текст с клавиатуры и выводит его на экран, заменив цифры от 0 до 9 словами...

Замена части слова на символ
Как заменить часть слова в строке на определенный символ? Например, если в строках 1-е слово &amp;minus;12, то его необходимо заменить на...

Замена первой буквы слова
Программа, которая считывает английский текст с файла и выводит его на экран, заменив прописной (нижнего регистра), каждую первую букву...

Поиск и замена слова в файле Excel
Я задался вопросом Как лучше реализовать замену определенного слова в файле Excel. Например у нас в файле есть слова {fam} {name} {otch}...

Поиск и замена слова в .txt файле
Здравствуйте, столкнулся с такой задачей- необходимо в файлах .txt в строках, где первое поле = 15 преобразовать второе поле: Новое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru