Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: 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 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
14-1135671516
ronyn
2005-12-27 11:18
2006.01.22
paramstr


14-1135494365
Mozart
2005-12-25 10:06
2006.01.22
Лунный цикл


1-1134555673
TUser
2005-12-14 13:21
2006.01.22
Вывод информации в консоль


2-1135859627
ezorcist
2005-12-29 15:33
2006.01.22
Как упаковать файл WinRar-ом


6-1128587101
Pul
2005-10-06 12:25
2006.01.22
CONNECTION CLOSED GRACEFULLY