![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Есть текст в memo, нужно его разбить на слова и занести в массив каждое слово.
Делаю так: PHP код:
Не работает Чувствую что где-то напортачил в копировании каждой строки memo в переменную ![]() |
|
#2
|
||||
|
||||
|
можно так (примитивно, делал лет 7 назад) (comma - разделитель, тоесть если надо по переносу строки, то разделитель будет #13)
Код:
function GetWords(comma,s: string): TStrings;
function GetComma(comm,j: string): string;
var
a,p: integer;
r,outstr: string;
begin
r := j;
if r[1] = comma then Delete(r,1,1);
p := Pos(comma,r);
for a:=1 to p-1 do
begin
outstr := outstr + r[a];
end;
Result := outstr;
end;
var
l: string;
a,f,b,z: integer;
begin
b := 0;
z := 0;
l := s + comma;
for f:=1 to Length(l) do
begin
if l[f] = comma then b := b + 1;
end;
while z < b do
begin
a := Pos(comma,l);
Result.Add(GetComma(comma,l));
Delete(l,1,a);
Inc(z);
end;
end;а можно воспользоваться функцией WrapText (описание тут): пример стопицот летней давности: Код:
function WrapWords(s: string): string; var a: integer; d: string; begin d := WrapText(s, #13#10, ['.',' ',#9,'-'], 1); for a:=1 to Length(d) do begin if d[a] = ' ' then Delete(d,a,1); end; Result := d; end; Последний раз редактировалось Ultras, 24.02.2010 в 17:33. |
|
#3
|
||||
|
||||
|
Еще вариант...
Код:
//*********************************************************
//Разбить строку на слова
Procedure TParser.pDevideStrOnWords(Str : String);
var
CurPos, LengthStr : byte;
Ch : WideString;
ListWords : TStringList;
begin
ListWords := TStringList.Create;
//Преобразование всех разделительных знаков в пробелы
Str:=StringReplace(Str,'.',' ',[rfReplaceAll]);
Str:=StringReplace(Str,',',' ',[rfReplaceAll]);
Str:=StringReplace(Str,'!',' ',[rfReplaceAll]);
Str:=StringReplace(Str,'?',' ',[rfReplaceAll]);
//Удаление лишних пробелов
CurPos := 0;
LengthStr := Length(Str);
repeat
inc(CurPos);
Ch := Copy(Str, CurPos ,1);
if Ch = ' ' then
begin
while Copy(Str, CurPos+1, 1) = ' ' do
begin
Str := Copy(Str, 1, CurPos)+Copy(Str, CurPos+2, LengthStr-CurPos+1);
Dec(LengthStr);
end;
end;
until
CurPos=Length(Str);
//Форматировние пробелов в конец строк
Str:=StringReplace(Str,' ',#13#10,[rfReplaceAll]);
ListWords.text := Str;
end;
//********************************************************* |
|
#4
|
||||
|
||||
|
странно, какие-то громоздкие коды...
Неужели строчку, например, "Я пользуюсь delphisources.ru" нельзя разделить на 3 слова и сохранить их, более проще? На худой конец, скажите где здесь ошибка: PHP код:
|
|
#5
|
||||
|
||||
|
раз надо мало кода то так
Код:
var
str :TStringList;
s :string;
begin
s:='Я пользуюсь delphisources.ru';
str := TStringList.create;
str.text := stringReplace(s, ' ', #13#10, [rfReplaceAll]);
str.SaveToFile('1.txt');
str.free;
end; |
|
#6
|
||||
|
||||
|
2 T-dayne
Все здорово))) Ну раздели при помощи твоего кода такую строку "Привет, как дела? Меня зовут Вася!" Понятно, когда пробелы все легко и просто, а если есть другие символы? |