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

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

15.01.2013, 13:09. Показов 2810. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru