Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.09 c
14-1135586366
vecna
2005-12-26 11:39
2006.01.22
долгорукий - дед мороз!


9-1123787092
Yura32
2005-08-11 23:04
2006.01.22
PowerDraw


4-1131625646
max999
2005-11-10 15:27
2006.01.22
Вопрос по размерам окна


2-1135753845
Andrey235
2005-12-28 10:10
2006.01.22
Проблема с delphi 6 !!!!!!!


6-1129112868
kivadim
2005-10-12 14:27
2006.01.22
Как оборвать свзь с клиентом у которого, левый ip_address





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский