Вниз
Скачать: 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.023 c
3-1132841563
salluy
2005-11-24 17:12
2006.01.22
Получить список PRIMARY KEY


14-1135850236
Jeer
2005-12-29 12:57
2006.01.22
Пожелание на новый год.


14-1135853434
ArtemESC
2005-12-29 13:50
2006.01.22
Английский...


3-1132810047
megaspring
2005-11-24 08:27
2006.01.22
Запросы&amp;Access


1-1135014105
novarm44
2005-12-19 20:41
2006.01.22
состояние кнопки мыши




   Наверх