Вниз
Скачать: CL | DM;

Преобразовать строку в отдельные слова!!   Найти похожие ветки 

 
Werg   (2005-12-23 19:12) [0]

Помогите пожалуйста! Такая вот проблема! В текстовом файле
в 1 строке находятся разные слова, которые отделены одним или несколькими пробелами!
Как каждое слово занести в массив?
К примеру строка: "1232 35445432 3     45   32" нужно чтобы было, m[1]:="1232"; m[2]:="35445432" ну и т.д
Чето не получается!!!


 
oldman ©   (2005-12-23 19:15) [1]

for пока не пробел
then добавить в слово N
else начать слово N+1


 
MacroDenS ©   (2005-12-23 19:53) [2]

Старая задачка для начинающих звучала примерно так:
необходимо подсчитать количество слов в ствроке. В контексте подразумевалось, что должны считаться именно слова а не пробелы, так же за слова не считались отдельно стоящие знаки пенктуации.

Для размышления:
считывая строку, анализируй символ по циклу и символ с коэффициентом +1


 
umbra ©   (2005-12-23 20:03) [3]

type
 TStringArray = array of strings;
{............................................}

function StringToWords(src: string): TStringArray;
var
 offs, len: integer;

begin
 SetLength(result, 0);
 while length(src) > 0 do
   begin
      SetLength(Result, Length(Result) + 1);
      offs := LastDelimiter(" ", src);
      len := Length(src) - offs;
      Result[High(Result)] := RightStr(src, len);
      if offs > 0 then
        repeat
          dec(offs);
         until (offs > 0) or (src[offs] <> " ");
      SetLength(src, offs);
   end;
end;


 
MBo ©   (2005-12-24 07:49) [4]

проще всего - использовать TStringList.CommaText


 
MasterPaleva ©   (2005-12-24 08:10) [5]

var
m: array of string;
i, j: integer;

begin
j:=0;
SetLength(m, 1);
for i:=1 to length(slovo) do begin
   // если нужно вытащить только цифры
 if (chr(slovo[i])>47) and (chr(slovo[i])<58) then m[j]:=m[j]+slovo[i] else
     if length(m[j])>0 then inc(j);    

end;

end;

Корявенько но очень просто и понятненько :)


 
MasterPaleva ©   (2005-12-24 08:19) [6]

Сорри, ошибочка.

var
m: array of string;
i, j: integer;

begin
j:=0;
SetLength(m, 1);
for i:=1 to length(slovo) do begin
if (chr(slovo[i])>47) and (chr(slovo[i])<58) then m[j]:=m[j]+slovo[i] else
    if length(m[j])>0 then begin
       inc(j);  
       setlength(m, length(m)+1);
    end;      

end;

end;



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.03 c
14-1135887655
Джо
2005-12-29 23:20
2006.01.22
Прокси-сервера


14-1136116968
ArtemESC
2006-01-01 15:02
2006.01.22
Интрепретаторы...


9-1123438144
SergProger
2005-08-07 22:09
2006.01.22
FullSceen


4-1131365236
Sky
2005-11-07 15:07
2006.01.22
Приложение не дает выключить комп.


4-1131198903
Navi
2005-11-05 16:55
2006.01.22
Как "прикрутить" HTML Help?




   Наверх