Форум: "Основная";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
ВнизРазделение строки на слова. Найти похожие ветки
← →
PaRL. (2002-11-10 20:53) [0]Этот вопрос тут уже был по-моему много раз.
Скажите ещё раз пожалуйста.
то есть "Привет всем" - в StringList слова занести "привет" и "всем"
← →
OxOTHuK (2002-11-10 21:05) [1]var s,s1,s2: string; i: integer;
begin
s:="Привет всем";
i:=pos(s," "); //ищем пробел и запоминаем его позицию
s1:=copy(s,1,i-1); //Копируем часть строки до первого пробела
s2:=copy(s,i,lenght(s)-i); //копируем все от пробела и до конца
end;
такое прокатит если у тебя в строке 2 слова и разделены пробелом, а если больше то только ЦИКЛ (и я подозреваю что не один)... на вопрос я ответил...
← →
Anatoly Podgoretsky (2002-11-10 21:17) [2]StringList.CommaText := "Привет всем"
← →
apay (2002-11-11 00:30) [3]вся фишка в тои, что разделителем слов может быть не только пробел. в сях есть ф-я strtok(...) для выдергивания слов, в дельфях я такой не встречал. надо писать самому.
2 Anatoly Podgoretsky
вообще-то надо
StringList.Delimiter := " ";
StringList.DelimitedText := "Привет всем";
← →
Дмитрий К.К. (2002-11-11 08:28) [4]Где-то на сайте http://delphibase.endimus.com/ была такая функция.
← →
Song (2002-11-11 08:59) [5]Замени пробелы на #13#10, в результате слова рассортируются по строкам.
← →
Separator (2002-11-11 09:37) [6]Во че я тут сделал:
type
TDelimiter = set of #32..#255;
procedure ConvertStr(const DelimitedText: string; const Delimeters: TDelimiter; List: TStrings);
var
i, Len, Prev: word;
begin
Len:= 1;
Prev:= 0;
for i:= 1 to Length(DelimitedText) do
if Prev <> 0 then
begin
if DelimitedText[i] in Delimeters then
begin
if Len = 0 then
Prev:= i + 1
else
begin
List.Add(copy(DelimitedText, Prev, Len));
Len:= 0;
Prev:= i + 1
end
end
else
Inc(Len)
end
else if not (DelimitedText[i] in Delimeters) then
Prev:= i;
if Len > 0 then
List.Add(copy(DelimitedText, Prev, Len));
end;
Пример использования:
ConvertStr(" Привет Народ! Как жизнь? У меня все ок.", [" ", "!", "?", "."], ListBox1.Items);
← →
KoluChi (2002-11-11 10:15) [7]Ну разделение - это наверное стихия Separatorа :)
← →
Separator (2002-11-11 10:22) [8]:)
← →
Separator (2002-11-11 10:24) [9]после этого форума еще и поиск файлов по маске
← →
Song (2002-11-11 13:18) [10]2Separator © (11.11.02 09:37)
Из СПб в Москву через Хабаровск...
← →
Alex44 (2002-11-11 13:47) [11]ExtractStrings
← →
snake1977 (2002-11-11 14:16) [12]вот пришлось когдато написать , есть аналог STRTOK но в СИ++
разбивает строку на лексемы
n- номер лексемы
s- строка исходник
l- разделитель лексем
результат - лексема
например st:=GetLex(3,"Всем программистам привет"," ");
результат = "привет";
или
например st:=GetLex(3,"Всем@@!программистам@@!привет","@@!");
результат = "привет";
Function GetLex(n:Integer; s:String; l:String):String;
Var i:Integer;
lx,st:String;
Begin
If S<>"" Then
Begin
lx:="";
i:=1;
st:=s;
Delete(st,Length(l)+1,Length(st)-Length(l));
While (st<>l) and (s<>"") do
Begin
lx:=lx+s[1];
Inc(i);
Delete(s,1,1);
st:=s;
Delete(st,Length(l)+1,Length(st)-Length(l));
End;
Delete(s,1,Length(l));
If n>1 Then lx:=GetLex(n-1,s,l);
End
Else
lx:="";
GetLex:=lx;
End;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.489 c