Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление (в цикле) лишних знаков в strin-говом значении [D6, IB6.x]


Konstantin ©   (2007-12-18 15:07:00) 

Есть переменная string примерно 8-ми значная. Как не перебирая по каждому знаку (в БД около 1500 записей, это будет очень долго), оставить на выходе только буквы и цыфры?

Спасибо.


Виталий Панасенко(дом)   (2007-12-20 21:33:00) [1]


> Konstantin   (18.12.07 15:07)


> Как не перебирая по каждому знаку

Если ты мне объяснишь, как можно узнать, какой символ следующий, "не попробовав его на вкус и цвет" я тебе... 10 у.е. вышлю.. честно


MetalFan   (2007-12-20 13:18:00) [2]

или с пом TRegExpr:
uses RegExpr;
...
 lStr := ReplaceRegExpr('[^a-Z0-9а-Я]+', lInputStr, '' );


{RASkov}   (2007-12-20 12:27:00) [3]

> [7] Konstantin   (20.12.07 12:18)
> А как по другому?

while Pos('_', cod) > 0 do Delete(cod, Pos('_', cod), 1);
:))
StringReplace(cod, '_', '', [rfReplaceAll]); ?


Konstantin   (2007-12-20 12:18:00) [4]

LabPod:
      if pos('_',cod) > 0 then
       begin
        s := pos('_',cod);
        Delete(cod,s,1);
        s := pos('_',cod);
        if s > 0 then
        Goto LabPod;
       end;


Это ж сразу двойка! А как по другому? Не перебирая по знакам.


StriderMan   (2007-12-20 12:03:00) [5]

SELECT TRIM(FIELD1) FROM TABLE1

пробелы точняк отбросит, для остального придется городить че-то другое


Сергей М.   (2007-12-20 10:47:00) [6]


> как этим пользоваться?


А причем здесь БД и IB6 ?


Konstantin   (2007-12-20 04:34:00) [7]

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);

var
 SelPos: Integer;
begin
 with TReplaceDialog(Sender) do
 begin
 { Perform a global case-sensitive search for FindText in Memo1 }
   SelPos := Pos(FindText, Memo1.Lines.Text);
   if SelPos > 0 then
   begin
     Memo1.SelStart := SelPos - 1;
     Memo1.SelLength := Length(FindText);
     { Replace selected text with ReplaceText }
     Memo1.SelText := ReplaceText;
   end
   else MessageDlg(Concat('Could not find "', FindText, '" in Memo1.'), mtError, [mbOk], 0);

 end;

end;


Тогда как этим пользоваться?


Сергей М.   (2007-12-18 15:24:00) [8]


> Palladin ©   (18.12.07 15:16) [2]


Смотря где и какой цикл заструячить


Сергей М.   (2007-12-18 15:16:00) [9]

Никак.


Palladin   (2007-12-18 15:16:00) [10]

очень сомневаюсь, что на 1500 записей долго, вот на 15 000 000 может быть и долго


Наверх

Титульная страница Поиск, карта сайта Написать письмо