Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

Разделение строки на слова.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
1-69353
max_28
2002-11-13 00:12
2002.11.21
защита программы от копирования


1-69290
Andrushk
2002-11-12 10:19
2002.11.21
Как в mdi приложении вызвать модальное окно?


3-69125
Андрусь
2002-11-01 21:05
2002.11.21
Как прикрутить небазовое поле...


3-69109
dim-
2002-11-03 15:44
2002.11.21
ошибка при дообавлении


3-69197
AM
2002-11-01 12:02
2002.11.21
Как выловить соб. OnMouseDown() для самих строк DBGrid?