Duat |
Отправлено: 14 Февраля, 2020 - 22:00:33
|
Наблюдатель
Покинул форум
Сообщений всего: 39
Дата рег-ции: Окт. 2018
Репутация: 0
|
Добрый вечер.
Подскажите, как можно считывать только часть строки из текстового файла?
Необходимые значения, которые нужно считать выделил красным.
Также, эти значения всегда находятся после первой запятой.
В описаниях функций нашел только как считать целую строку..(
Содержимое файла, с которого нужно считать: (Отобразить)
0,370 176,0,0,0
1,400,0,0,0
2,421,0,0,0
3,424,0,0,0
4,428 172,0,0,0
5,469 689,0,0,0
|
|
|
Zireael |
Отправлено: 15 Февраля, 2020 - 00:39:09
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:string path="C:\test.txt"; // путь к файлу
char text[999999];
string temp, s[999];
if(fopen(path, "rb")) // если открылся
{
int count_symbol=freadb(#text[0], sizearray(text)) - 1; fclose();// прочитать файл и закрыть его
regexreplace(-1, #temp, format(#text[0], count_symbol), "^\d+,([\d ]+).*$", "$1", MULTILINE); // оставить только числа после первой запятой
messagebox(temp);
int result=regexsearch(sizearray(s), #s[0], temp, "^.*$", MULTILINE); // разбить строку в массив
for(int i=0; i<result; i++)messagebox(s[i]);
}
else messagebox("Файл не найден"); |
|
|
Duat |
Отправлено: 15 Февраля, 2020 - 00:46:43
|
Наблюдатель
Покинул форум
Сообщений всего: 39
Дата рег-ции: Окт. 2018
Репутация: 0
|
Zireael пишет: CODE:string path="C:\test.txt"; // путь к файлу
char text[999999];
string temp, s[999];
if(fopen(path, "rb")) // если открылся
{
int count_symbol=freadb(#text[0], sizearray(text)) - 1; fclose();// прочитать файл и закрыть его
regexreplace(-1, #temp, format(#text[0], count_symbol), "^\d+,([\d ]+).*$", "$1", MULTILINE); // оставить только числа после первой запятой
messagebox(temp);
int result=regexsearch(sizearray(s), #s[0], temp, "^.*$", MULTILINE); // разбить строку в массив
for(int i=0; i<result; i++)messagebox(s[i]);
}
else messagebox("Файл не найден");
А если там могут быть не только числа, но и слова?) |
|
|
Zireael |
Отправлено: 15 Февраля, 2020 - 01:15:29
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А если там могут быть не только числа, но и слова?)
Лучше сразу писать что там может быть, чтобы не исправлять каждый раз.
Найдет любой текст между запятыми:
CODE:string path="C:\test.txt"; // путь к файлу
char text[999999];
string temp, s[999];
if(fopen(path, "rb")) // если открылся
{
int count_symbol=freadb(#text[0], sizearray(text)) - 1; fclose();// прочитать файл и закрыть его
regexreplace(-1, #temp, format(#text[0], count_symbol), "^\d+,([^,]+).*$", "$1", MULTILINE); // оставить только числа после первой запятой
messagebox(temp);
int result=regexsearch(sizearray(s), #s[0], temp, "^.*$", MULTILINE); // разбить строку в массив
for(int i=0; i<result; i++)messagebox(s[i]);
}
else messagebox("Файл не найден"); |
|
|
|