Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

НУжно разобрать выражение *.gif;*.jpg;*.html;*.php; и т.д.   Найти похожие ветки 

 
Кокандокало   (2002-12-16 14:42) [0]

Подскажите пожалуйста, мастера, есть ли в дельфях какой-нить стринг токенайзер?
Нужно разобрать строку с типами файлов... и вытащить конкретные значения в TStringList
т.е. *.gif;*.jpg;*.html;*.php; превратить в
gif
jpg
html
php


 
Song   (2002-12-16 14:45) [1]

Ну дык Text:=StringReplace(Text,";*.",#13#10,[rfReplaceAll]); и последний символ потом стереть..


 
Calm   (2002-12-16 14:45) [2]

Стандартного нет.
Но ведь проще задачи не бывает.
Проходишь от начала строки до конца и выделяешь слова. Значащием символы - латинские буквы, разделители - пробел, *,;.
В чем проблема?


 
Кокандокало   (2002-12-16 15:03) [3]

а как? ты предлагаешь посимвольно разбирать строку? А точно другого способа нет?


 
Calm   (2002-12-16 15:06) [4]

Любой способ к кончено итоге сведется к посимвольной обработке. Это можно возложить на какой-нибуль компонент или делать самому, но все равно посимвольно нужно смотреть.


 
asmith   (2002-12-16 15:53) [5]

var
lst : TStringList;
...
lst := TStringList.Create();
lst.Delimiter := ";";
lst.DelimitedText := "*.gif;*.jpg;*.html;*.php;";
for i := 0 to lst.Items.Count - 1 do
strToken := lst[i];
...




 
Nikolay M.   (2002-12-16 17:11) [6]

В RX есть прекрасная функция ExtractDelimited. Если RX под рукой нет, вот, выдрал:

function ExtractDelimited(N: Integer; const S: string;
const Delims: TCharSet): string;
var
CurWord: Integer;
I, Len, SLen: Integer;
begin
CurWord := 0;
I := 1;
Len := 0;
SLen := Length(S);
SetLength(Result, 0);
while (I <= SLen) and (CurWord <> N) do begin
if S[I] in Delims then Inc(CurWord)
else begin
if CurWord = N - 1 then begin
Inc(Len);
SetLength(Result, Len);
Result[Len] := S[I];
end;
end;
Inc(I);
end;
end;


 
id_privin   (2002-12-16 17:47) [7]

Есть неплохой, правда не безглючный класс. Называется TRegExpr.
Ищеться яндексом. Решает большинство проблем. Правда иногда очень медлено (посравнению с перлом).


 
Юрий Зотов   (2002-12-16 18:53) [8]

Народ, вы, прежде чем ответить, предыдущие ответы читаете? Все делается в одну простейшую строку, без всяких дополнительных библиотек и компонентов, и без всякого самопального парсинга.

См. самый первый ответ - Song © (16.12.02 14:45). О чем еще после этого нужно дискутировать, непонятно.


 
Song   (2002-12-16 20:07) [9]

И действительно :)
Ну, кстати я ещё забыл, что нужно первые 2 символа стереть :) - <*.>


 
Кокандокало   (2002-12-16 21:11) [10]

Дык в том то и дело, что метод Song"a превращает string в string, а не string в TStringList... Ну ладно.. извините.. просто хотел убедится, что в дельфи аппрарат по обработке строк бействительно скуден.. Нет тебе никаких токенайзеров...
Эээх..
Всем спасибо..

2id_privin: спасибо.. поищу, попробую..


 
Song   (2002-12-16 21:19) [11]

2Кокандокало (16.12.02 21:11)
Почему не стринглист? Это смотря как применять.. я же не зря свойство Text-то написал, думал вы догадаетесь..

Var Str:TStringList;
S:String;

Str:= TStringList.Create;
With Str Do
try
S:="*.gif;*.jpg;*.html;*.php;";
S:=StringReplace(S,";*.",#13#10,[rfReplaceAll]);
Delete(S,1,2);
Delete(S,Length(S),1);
Text:=S;
ShowMessage(Text);
finally
Str.Free;
end;


 
Song   (2002-12-16 21:25) [12]

ай-ай-ай...
Надо перед Delete поставить "System.", а то он не тот delete будет иметь ввиду :)


 
Юрий Зотов   (2002-12-16 23:06) [13]

> Кокандокало (16.12.02 21:11)
> Дык в том то и дело, что метод Song"a превращает string в
> string, а не string в TStringList...

Батенька, а дела-то плохи... Справочку по TStrings поcмотреть не помешало бы...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-85996
abat
2002-12-16 12:02
2002.12.26
Проверка существования объекта


1-85932
eLVik
2002-12-17 15:03
2002.12.26
Цвет фона ячейки в StringGrid


7-86193
Zombik666
2002-10-23 15:01
2002.12.26
BASIC to ASM


14-86146
Anatoly Podgoretsky
2002-12-06 07:37
2002.12.26
Именинники 6 декабря


14-86075
Треугольник
2002-12-04 04:37
2002.12.26
Помогите кто может ....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский