Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

Разбитие строки на части

15.01.2013, 13:09. Показов 3039. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня.Подскажите что почитать можно про разбитие строки на на части
До субботу не будет компьютера, хоть информацию почитать
Задача такова , имеется строка такого вида
Code
1
Дима:Привет:122:11/1111/1:Один:ДВа:0102030405060708091011121314 #Первая строка
Мне нужно разбить эту строку на строки:

Первая строка
Дима
Привет
122
Один
Два
0102030405060708091011121314

Как это реализовать, и с помощи чего?
Я думал с помощью регулярных выражений RegExpr
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.01.2013, 13:09
Ответы с готовыми решениями:

Разбитие времени на составные части
Здраствуйте, возник вопрос по разбитию реального времени на составные его части, на минуты/секунды/часы/дни/месяцы/год, как отдельные...

Разбитие строки
Есть строка, которая передаётся в функцию func(code); Содержимое строки выглядит в подобном виде: set 10 mix true real 15

Разбитие строки на символы
Как преобразовать строку в массив символов? Заранее спасибо

28
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
18.01.2013, 17:44  [ТС]
Студворк — интернет-сервис помощи студентам
Вот пример...с TestReg, может что подскажите
Вложения
Тип файла: rar TestReg.rar (468.4 Кб, 3 просмотров)
0
 Аватар для Stridemann
5 / 5 / 3
Регистрация: 19.01.2013
Сообщений: 56
19.01.2013, 03:02
Товарищи! Прошу помощи. 2 дня по форумам лажу, не могу решить простую поставленную задачу.

Имеем строку в Edit1:
Code
1
C:\Steam\steamapps\sourcemods\rock_gallery\materials\models\stridemann
Нужно чтобы с нее мы получили все что после \materials\ На этом примере в Edit2 должно получится:
Code
1
models\stridemann
Пример №2 (чтобы не подумали что ее нужно обрезать с конца как здесь: обрезание строки

Имеем :
Code
1
C:\Steam\steamapps\sourcemods\rock_gallery\materials\models\project\mymodels\mat
должно получится:
Code
1
models\project\mymodels\mat

Пытаюсь так:

C++
1
2
3
4
5
6
7
8
9
10
 AnsiString stroka="C:\Steam\steamapps\sourcemods\rock_gallery\materials\models\stridemann";
 int r=stroka.Pos("#");
 AnsiString nach=stroka.SubString(r+1, stroka.Length()-r+1);
 AnsiString kon=stroka.SubString(0, r-1);
 Memo1->Lines->Add(nach);
 TStringList *list = new TStringList;
 list->Delimiter='\materials\';
 list->DelimitedText=kon;
 Memo1->Lines->AddStrings(list);
 delete list;
Но ошибки:

[C++ Error] Unit1.cpp(26): E2380 Unterminated string or character constant
[C++ Warning] Unit1.cpp(26): W8098 Multi-character character constant
[C++ Error] Unit1.cpp(26): E2129 Character constant too long (or empty)

Скрин:
clip2net. com/s/2JcAJ

Прошу вашей помощи, для вас это не сложная задача... Меня же уперла в тупик. Программа былабы закончена, если бы не... это.

Добавлено через 12 минут
Может как-то через StrictDelimiter.. Но тогда 'StrictDelimiter' is not a member of 'TStringList'

Добавлено через 57 минут

Если что строка в Edit1 получается (с кнопки) с кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    char FileName[MAX_PATH+1];
    BROWSEINFO bi;
    memcpy(FileName, "C:\\", 3);
    bi.hwndOwner = 0;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = FileName;
    bi.lpszTitle = "Âûáåðèòå ïóòü ê ïàïêå òåêñòóð";
    bi.ulFlags = BIF_STATUSTEXT
              |BIF_BROWSEFORCOMPUTER
              |BIF_EDITBOX
              |BIF_NEWDIALOGSTYLE
              /*|BIF_NONEWFOLDERBUTTON*/
              |BIF_USENEWUI;
              //|BIF_BROWSEINCLUDEFILES;
    bi.lpfn = NULL;
    SHGetPathFromIDList(SHBrowseForFolder(&bi),FileName);
    Edit1->Text=FileName;
Может просто ее переделать..
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
19.01.2013, 11:37
Stridemann, тему надо отдельную создавать.
C++
1
2
3
    String str( "C:\\Steam\\steamapps\\sourcemods\\rock_gallery\\materials\\models\\project\\mymodels\\mat" ),
                   target( "\\materials\\" );
    ShowMessage( str.SubString( str.Pos( target ) + target.Length( ), str.Length( ) ) );
Добавлено через 4 минуты
Ddv122, сдается мне, надо использовать метод TRegEx::Matches(), только вот пока никак не разберусь в синтаксисе его регулярок...
1
 Аватар для Stridemann
5 / 5 / 3
Регистрация: 19.01.2013
Сообщений: 56
19.01.2013, 14:16
>>BRcr

Спасибо! Но у меня так тоже получалось..
Проблема только в том, что я имею строку:
C:\Steam\steamapps\sourcemods\rock_galle ry\materials\models\stridemann
а не:
C:\\Steam\\steamapps\\sourcemods\\rock_g allery\\materials\\models\\stridemann

Значит просто символы \ на \\ чтоле заменять.
Буду так пробовать..

Добавлено через 25 минут
Ура! Догнал как сделать:

C++
1
2
3
4
5
6
String a ( Edit3->Text );
a = StringReplace(a,"\\","\\\\",TReplaceFlags()<<rfReplaceAll);
String str( a), target( "\\materials\\\\" );
String b( str.SubString( str.Pos( target ) + target.Length( ), str.Length( ) ) );
b = StringReplace(b,"\\\\","\\",TReplaceFlags()<<rfReplaceAll);
Edit16->Text=(b);
На выходе получаем
models\stridemann

Всем спасибо. Прога для компиляции моделей сделана.

Добавлено через 5 минут
Вместе с кнопкой выбора директории получилось (может кому понадобится):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    char FileName[MAX_PATH+1];
    BROWSEINFO bi;
    memcpy(FileName, "C:\\", 3);
    bi.hwndOwner = 0;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = FileName;
    bi.lpszTitle = "Âûáåðèòå ïóòü ê ïàïêå òåêñòóð";
    bi.ulFlags = BIF_STATUSTEXT
              |BIF_BROWSEFORCOMPUTER
              |BIF_EDITBOX
              |BIF_NEWDIALOGSTYLE
              /*|BIF_NONEWFOLDERBUTTON*/
              |BIF_USENEWUI;
              //|BIF_BROWSEINCLUDEFILES;
    bi.lpfn = NULL;
    SHGetPathFromIDList(SHBrowseForFolder(&bi),FileName);
    String a ( FileName );
        a = StringReplace(a,"\\","\\\\",TReplaceFlags()<<rfReplaceAll);
        String str( a), target( "\\materials\\\\" );
        String b( str.SubString( str.Pos( target ) + target.Length( ), str.Length( ) ) );
        b = StringReplace(b,"\\\\","\\",TReplaceFlags()<<rfReplaceAll);
        Edit3->Text=(b);
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.01.2013, 15:45  [ТС]
Stridemann, Поздравляю)А у меня так и не вышло)Не нашёл я информации о RegExpr
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
05.02.2013, 01:12
Возможно, тебя заинтересует TMask? Глянь сюды - Создание собственного компонента, происходящего от Edit
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
06.02.2013, 02:10  [ТС]
BRcr, спасибо, но
\W - любой символ, но скорее это в PHP. А в MatchesMask наверно другой синтаксис..... ([a-z]): ([a-z]) : ([0-9]) что то вроде такого?Буду пробовать
C++
1
2
3
 String Text= "Дима:Привет:122:11/1111/1:Один:ДВа:0102030405060708091011121314 #Первая строка ";
 std::auto_ptr<TMask> Mask(new TMask("(\\w+):(\\w+):(\\d+):\\d*/\\d*/\\d*:(\\w+):(\\w+):(\\d+) #(\\w+ \\w+)") );
 if( Mask->Matches(Text) ) ShowMessage("Okay!");
Добавлено через 9 часов 18 минут
Цитата Сообщение от BRcr Посмотреть сообщение
сдается мне, надо использовать метод TRegEx::Matches(), только вот пока никак не разберусь в синтаксисе его регулярок...
Вот случайно наткнулся
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
06.02.2013, 10:49
Ddv122, по поводу твоей задачи..., почему бы не применить такую конструкцию (вроде и текста немного, и манипулировать полями удобно)__
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   TStringList *sL = new TStringList() ;
    ExtractStrings(TSysCharSet()<<':'<<'#'<<'\r'<<'\0',TSysCharSet(),
       Edit1->Text.c_str(),sL); 
    Memo1->Lines = sL ;
     Memo2->Lines = sL ;
     Memo2->Lines->Move(sL->Count-1,0);
     Memo2->Lines->Delete(4);
    delete sL;
}
Миниатюры
Разбитие строки на части  
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
06.02.2013, 16:30  [ТС]
nick42, спасибо, но сейчас проблема в том что бы исключить строки не похожие строки на
Code
1
Дима11:Привет11:122:11/1111/1:Один1:ДВа2:0102030405060708091011121314a #Первая строка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2013, 16:30

Разбитие строки через DelimitedText
Несколько дней тому назад я наткнулся на следующий код TStringList *source = new TStringList; source-&gt;Delimiter = ','; ...

xml разбитие на 3 части
Всем привет! Я, считываю с xml файла строку, и необходимо разбить ее на 3 части, и вывести каждую часть в отдельный txtBox. ...

Разбитие кода на отдельные части
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;ctime&gt; int sec(0); int minu(0); int chas(0); int B = 1; int...

Разбитие синусоидального сигнала на части
Здравствуйте,столкнулся с такой проблемой : мне требуется разбить сигнал на несколько частей по типу : с 0 до 51 элемента,с 51 элемента до...

Загрузка изображения и разбитие на части
У меня есть &quot;пазл&quot;, там изображение берется из указанного пути, т.е. в корне лежит какое-либо изображение, оно загружается и разбивается на...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru