Главная страница
    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.006 c
1-85965
Alpine
2002-12-15 17:53
2002.12.26
Как сделать Combobox неменяемым (Read Only) ?


14-86087
VJar
2002-12-08 10:35
2002.12.26
Компонент для просмотра реестра


4-86207
slipper1
2002-11-11 12:17
2002.12.26
Файла и доступ к диску


3-85799
xenon
2002-12-05 17:24
2002.12.26
Operation not allowed on unidirectional dataset


1-86017
Фсщкгі
2002-12-16 14:16
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский