Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » поиск и замена слов в тексте

Страниц (1): [1]
 

1. Alex5757 - 04 Февраля, 2023 - 05:48:20 - перейти к сообщению
помогите написать скрипт для текстового файла, содержащего текст с заранее известными ошибками в словах, которые нужно заменить на "правильные". Наример:

-------------------------------------------------------
сахар;От;Александр;Источник;магазин;15;кг
грибы белые;От;Иван Иванович;Источник;лес;20;кг
бензин;От;Иван Петрович;Источник;машина;15;литров
алкоголь;От;Василий;Источник;ларёк;10;литров
алкоголь вино;От;Лариса;Источник;КБ;15;бутылок
помидоры;От;Катя;Источник;огород;15;ящиков
огурцы;От;марина;Источник;теплТица;15;кг
лук;От;Олег;Источник;огород;5;кг
сахар;От;Александр;Источник;магазин;15;кг
грибы белые;От;Иван Иванович;Источник;лес;20;кг
бензин;От;Иван Петрович;Источник;машина;15;литров
алкоголь;От;Василий;Источник;ларёк;10;литров
алкоголь вино;От;Лариса;Источник;КБ;15;бутылок
помидоры;От;Катя;Источник;огород;15;ящиков
огурцы;От;мариНа;Источник;теплТица;15;кг
лук;От;Олег;Источник;огород;5;кг
сахар;От;Александр;Источник;магазин;15;кг
грибы белые;От;Иван Иванович;Источник;лес;20;кг
бензин;От;илья Петрович;Источник;машина;15;литров
алкоголь;От;Василий;Источник;ларёк;10;литров
алкоголь вино;От;Лариса;Источник;КБ;15;бутылок
помидоры;От;Катя;Источник;огород;15;ящиков
огурцы;От;марина;Источник;теплТица;15;кг
лук;От;Олег;Источник;огород;5;кг
-----------------------------------------------------------------
необходимо заменить:
"марина" на "Марина"
"илья " на "Иван "
"КБ" на "Красное и Белое"
"бензин" на "солярка"
"теплиТица" на "теплица"
2. Zireael - 04 Февраля, 2023 - 08:32:12 - перейти к сообщению
CODE:
string Text;
char content[9999999];
string replace[99][2];

string path = "D:\testfile.txt"; // путь к файлу
int utf8 = 1; // кодировка файла: 0 - ansi, 1 - utf8

// что на что менять
replace[0][0] = "марина"; replace[0][1] = "Марина";
replace[1][0] = "илья"; replace[1][1] = "Иван";
replace[2][0] = "КБ"; replace[2][1] = "Красное и Белое";
replace[3][0] = "бензин"; replace[3][1] = "солярка";
replace[4][0] = "теплТица"; replace[4][1] = "теплица";

if (fopen(path, "rb")) // открыть файл
{
initialarray(#content[0], 0);
freadb(#content[0], sizearray(content)); // прочитать
fclose(); // закрыть

if(utf8==0)Text = format(#content[0]);
else Text = utf8toansi(#content[0]);
//messagebox(Text);

int _size = sizearray(replace);
for(int i=0; i<_size; i++) // замена текста в цикле
{
if(replace[i][0]=="" && replace[i][1]=="") break;
regexreplace(-1, #Text, Text, replace[i][0], replace[i][1]);
}

if (fopen(path, "wb")) // открыть файл
{
if(utf8==0)strcpy(#content[0], Text);
else strcpy(#content[0], ansitoutf8(Text));

fwriteb(#content[0], size(#content[0])); // записать текст
fclose();
start(path);
}
else messagebox("Файл для записи не открылся");
}
else messagebox("Файл для чтения не открылся");
3. Alex5757 - 04 Февраля, 2023 - 18:21:25 - перейти к сообщению
Zireael, спасибо большое! проверю - отпишусь как работает!

Powered by ExBB FM 1.0 Final