Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа со строками

2.0K
18 августа 2003 года
Marisha
24 / / 06.08.2003
Подскажите пожалуйста как со строками, регулярными выражениями.
1.3K
18 августа 2003 года
Dissident
73 / / 05.03.2003
Цитата:
Originally posted by Marisha
Подскажите пожалуйста как со строками, регулярными выражениями.



Как-то непонятно вопрос поставлен!

3
18 августа 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Marisha
Подскажите пожалуйста как со строками, регулярными выражениями.



Так же, как с мужчинами... :D

2.0K
19 августа 2003 года
Marisha
24 / / 06.08.2003
Цитата:
Originally posted by Dissident


Как-то непонятно вопрос поставлен!



Прошу прошения за опечаки.

Я хотела спросить -

Подскажите пожалуйста функции для работы со строкаки, регулярными выражениями

Еще раз прошу прощения

460
19 августа 2003 года
Berg
261 / / 27.03.2003
Цитата:
Originally posted by Marisha


Прошу прошения за опечаки.
Я хотела спросить -
Подскажите пожалуйста функции для работы со строкаки, регулярными выражениями
Еще раз прошу прощения



Насколько я понимаю...нет таких...Это же не PHP...:-)
Поговаривают, что есть некий класс TParser. Может быть он вам поможет...

Лучше опишите саму задачу - вам и посоветуют как ее лучше решить...

3
19 августа 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Marisha


Прошу прошения за опечаки.

Я хотела спросить -

Подскажите пожалуйста функции для работы со строкаки, регулярными выражениями

Еще раз прошу прощения



Для работы со строками есть функции в RTL, они начинаются с str (для char), например strlen, strcpy, strcmp и т.д.

В Win32 API также есть функции для работы со строками, например lstrlen, CompareString, и т.д.

Что касаемо регулярных выражений, для BCB есть библиотека TRegExpr. Взгляните еще на сайт http://www.pcre.org/, там представлена достаточно популярная библиотека PCRE. Кажется, она должна поставляться вместе с BCB, посмотрите файл pcre.h. Можно еще использовать библиотеку boost (boost.org).

2.0K
19 августа 2003 года
Marisha
24 / / 06.08.2003
Цитата:
Originally posted by Berg


Насколько я понимаю...нет таких...Это же не PHP...:-)
Поговаривают, что есть некий класс TParser. Может быть он вам поможет...

Лучше опишите саму задачу - вам и посоветуют как ее лучше решить...



Мне необходимо разбить строку на несколько строк
по разделителю

Как например: строку "AAAA BBBB CCCC" разбить
на три строки, результат поместить в массив строк

460
19 августа 2003 года
Berg
261 / / 27.03.2003
Цитата:
Originally posted by Marisha


Мне необходимо разбить строку на несколько строк
по разделителю

Как например: строку "AAAA BBBB CCCC" разбить
на три строки, результат поместить в массив строк



Если это ВСЯ задача, то полагаю, что можно обойтись простыми Pos и SubString, вместо привлечения доп.библиотек...

989
19 августа 2003 года
Vlad232ua
182 / / 02.04.2003
Посмотри, может подойдет. У меня этот кусок работает

TStringList* TMainForm::SplitString(AnsiString & text, AnsiString & separators)
{
TStringList* list = new TStringList();
AnsiString str;
int start = 1, stop;
int l = text.Length();
for(int i=1; i<=l; i++)
{
if(text.IsDelimiter(separators,i))
{
stop = i;
if(stop-start>=1)
{
list->Add(text.SubString(start,stop-start));
}
start = stop + 1;
}
}
if(l-start>=1 || l==start)
list->Add(text.SubString(start,l-start+1));

return list;
}
358
19 августа 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Vlad232ua
Посмотри, может подойдет. У меня этот кусок работает

TStringList* TMainForm::SplitString(AnsiString & text, AnsiString & separators)
{
TStringList* list = new TStringList();
AnsiString str;
int start = 1, stop;
int l = text.Length();
for(int i=1; i<=l; i++)
{
if(text.IsDelimiter(separators,i))
{
stop = i;
if(stop-start>=1)
{
list->Add(text.SubString(start,stop-start));
}
start = stop + 1;
}
}
if(l-start>=1 || l==start)
list->Add(text.SubString(start,l-start+1));

return list;
}


Все должно нормально работать, только я бы чуть изменил, дабы избежать расходов на копирование класса. Примерно вот так:

Код:
void TMainForm::SplitString(AnsiString & text, AnsiString & separators, TStringList *list)
{
    AnsiString str;
    int start = 1, stop;
    int l = text.Length();
    for(int i=1; i<=l; i++)
    {
        if(text.IsDelimiter(separators,i))
        {
            stop = i;
            if(stop-start>=1)
            {
                list->Add(text.SubString(start,stop-start));
            }
            start = stop + 1;
        }
    }
    if(l-start>=1 || l==start)
        list->Add(text.SubString(start,l-start+1));
}
989
19 августа 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by moonmike

Все должно нормально работать, только я бы чуть изменил, дабы избежать расходов на копирование класса. Примерно вот так:
 
Код:
void TMainForm::SplitString(AnsiString & text, AnsiString & separators, TStringList *list)


Согласен.
Если прогу нельзя улучшить, то что это за прога:)

358
19 августа 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Vlad232ua

Согласен.
Если прогу нельзя улучшить, то что это за прога:)


Ага, в любой программе из 2-х или более операторов есть как минимум одна ошибка=)

3.5K
24 августа 2003 года
zl0gzd3r
13 / / 23.08.2003
Цитата:
Originally posted by Marisha
Подскажите пожалуйста как со строками, регулярными выражениями.



Есть компонент - RegExpr. Полная копия Perl`овских, только реализовано все в функциях. Загляни на http://anso.da.ru/.

2.5K
25 августа 2003 года
VladСD
24 / / 20.04.2003
Цитата:
Originally posted by Marisha


Мне необходимо разбить строку на несколько строк
по разделителю

Как например: строку "AAAA BBBB CCCC" разбить
на три строки, результат поместить в массив строк


Совершенно элементарно: с помощью свойств Delimiter (тип char) и DelimitedText (тип AnsiString) у StringList'а (если надо код, могу завтра отпостить). Кстати, у Memo есть аналогичные свойства.

2.5K
28 августа 2003 года
VladСD
24 / / 20.04.2003
Цитата:
Originally posted by Marisha


Мне необходимо разбить строку на несколько строк
по разделителю

Как например: строку "AAAA BBBB CCCC" разбить
на три строки, результат поместить в массив строк


Например, так:

Код:
//------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "UMain.h"
//------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ AnsiString S=Edit1->Text;

ShowMessage(DelStr(' ',S));
}            
//------------------------------------------------
AnsiString TForm1::DelStr(char Delimiter,AnsiString S)
{TStringList * A=new TStringList;
try{
A->Delimiter=Delimiter;
A->DelimitedText=S;
return A->Text;}
__finally {delete A;A=0;}

}
//------------------------------------------------
//Собственно, в StringList'е и будет
//массив разделённых строк
//------------------------------------------------
//------------------------------------------------

#ifndef UMainH
#define UMainH
//-----------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
        TEdit *Edit1;
        void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
AnsiString DelStr(char Delimiter,AnsiString S);
        __fastcall TForm1(TComponent* Owner);
};
//------------------------------------------------
extern PACKAGE TForm1 *Form1;
//------------------------------------------------
#endif
4
28 августа 2003 года
mike
3.7K / / 01.10.2002
Читый C:

 
Код:
char * pToken;
pToken = strtok(str,"&");
while (pToken != NULL) {
    printf("%s\n",pToken);
    pToken = strtok(NULL,"&");
    }


В данном случае разделитель - "&"
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог