split string

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

split string

Сообщение Mayor » 23.09.2007 13:48:50

split string

чем можно разбить строку на слова?

var s : ansistring;
m : array of ansistring;

procedure ....

m := s

return количество слов
Mayor
новенький
 
Сообщения: 20
Зарегистрирован: 04.09.2007 16:55:14

Сообщение Attid » 23.09.2007 13:59:58

ручками, перебираешь до пробела и засовываешь в масив
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение bw » 23.09.2007 14:20:34

Когда я вел речь о том есть ли нормальная либа в FP для работы со строками я говорил и о такой функции. Например в Python это делается так:
Код: Выделить всё
list_of_words = 'слово1 слово2 и т.д.'.split(' ')
assert list_of_words[0] == 'слово1'
assert list_of_words[1] == 'слово2'
assert list_of_words[2] == 'и'
assert list_of_words[3] == 'т.д.'

А как так же просто этого добиться на FP я не знаю :-).

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Сообщение alexs » 23.09.2007 15:55:26

посмотри модуль strings - кажется там есть
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение shade » 23.09.2007 16:01:04

Код: Выделить всё
type
  TStringArray = array of string;

function Explode(Ch: Char; const Text: string): TStringArray;
var
  i, k, Len: Integer;
  Count: Integer;
begin
  if Text = '' then
  begin
    Result := nil;
    Exit;
  end; // if
  Count := 0;
  Len := Length(Text);
  for i := 1 to Len do
  begin
    if Text[i] = Ch then Inc(Count);
  end; // for i
  SetLength(Result, Count + 1);
  Count := 0;
  k := 1;
  for i := 1 to Len do
  begin
    if Text[i] = Ch then
    begin
      Result[Count] := Copy(Text, k, i - k);
      Inc(Count);
      k := i + 1;
    end; // if
  end;
  Result[Count] := Copy(Text, k, Len - k + 1);
end;
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение voltron » 24.09.2007 09:36:19

Думаю, можно обойтись и средствами самого FPC. В юните StrUtils есть функции
Код: Выделить всё
function WordCount(const S: string; const WordDelims: TSysCharSet): Integer;
function ExtractWord(N: Integer; const S: string;  const WordDelims: TSysCharSet): string;inline;

Первая возвращает количество слов, разделенных заданным разделителем (или разделителями), в строке. А вторая возвращает слово по его номеру и разделителям.
voltron
новенький
 
Сообщения: 64
Зарегистрирован: 06.07.2007 13:27:46
Откуда: Украина


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru