Главная страница
    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.46 MB
Время: 0.052 c
14-1135757123
Чапаев
2005-12-28 11:05
2006.01.22
Flash


2-1136097574
_Sergey_
2006-01-01 09:39
2006.01.22
MatchesMask для файлов разных расширений


14-1136040935
Kolan
2005-12-31 17:55
2006.01.22
Всех с наступающим :)


2-1135921105
Alex7
2005-12-30 08:38
2006.01.22
Обращение к БД при активизации формы


14-1135334743
Vasya Pupkin
2005-12-23 13:45
2006.01.22
Как проверить батарейку?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский