Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

разбитие текста на слова   Найти похожие ветки 

 
Relaxxx   (2003-07-20 19:55) [0]

У меня тут возникла проблемка, у меня в Мемо написан какой то текс, причем этот текс содержит и запятые и тире и знаки восклицания и вопроса.
Так вот как мне разбить текс на слова. Я делал с помощью CommaText но она разделяет только пробелы и запятые и у меня получается иногда такие слова "привет!", "да?", а мне нужно что б было без каких либо знаков а только слова которые я потом занесу в масив.


 
Palladin ©   (2003-07-20 20:02) [1]

а ты вот типа в своем тексе выделяй слова по признаку принадлежности символа к словяному множеству...


 
Романов Р.В. ©   (2003-07-20 20:06) [2]

Найди и удали знаки препинания из слов


 
Relaxxx   (2003-07-20 20:14) [3]

Извините за надоедливость, а как мне удалить например все знаки восклицания с текста, какой функцией???


 
Романов Р.В. ©   (2003-07-20 20:16) [4]

F1 - Pos, Delete, Copy, see also


 
Spawn ©   (2003-07-20 20:21) [5]

StringReplace+F1


 
Relaxxx   (2003-07-20 21:01) [6]

Я что то немного непонял, в функции StringReplace, четвертый параметр TReplaceFlags. Что это такое и чему он может равнятся. В справке написано что он может быть либо rfReplaceAll либо rfIgnoreCase. Но у меня компилятор пишет ошибку
Incompatible types: "TReplaceFlags" and "Enumeration"

И еще один маленький вопросик, как узнать номер останнего символа в Мемо?? Это так что б потом не спрашивать


 
Lexer ©   (2003-07-20 21:08) [7]

Убрать все запятые можно и так:
while Pos(",", S) > 0 do
S[Pos(",", S)] := "";


 
Relaxxx   (2003-07-20 21:19) [8]

Спасибо Lexer ©, с помощью Pos все работает, теперь осталось узнать ради интереса что там с тем флагом у StringReplace.
И еще как узнать номер последнего символа, или как мне например скопировать область с 30 символа до конца
s:=Copy(Memo1.Text, 30, <а что здесь написать>);


 
Spawn ©   (2003-07-20 21:20) [9]

Relaxxx (20.07.03 21:01)
[rfReplaceAll]


 
Spawn ©   (2003-07-20 21:23) [10]

Индекс последнего символа Memo1.Lines.Count-1

s:=Copy(Memo1.Text, 30, Memo1.Lines.Count-30-1);


 
panov ©   (2003-07-20 21:24) [11]

>Relaxxx (20.07.03 21:01
вот пример разбивки любой строки на слова:

s := "Пример, test1!ASDfkk;sdlkjвап=34-.гы-гы-гы";
s1 := "";
isTrue := False;
for i := 1 to Length(s) do
begin
case s[i] of
"a".."z","A".."Z","?".."?","?".."?":
begin
isTrue := False;
s1 := s1+s[i];
end;
else
begin
if not isTrue then
begin
isTrue := True;
s1 := s1+ #13+#10;
end;
end;
end;
end;
ShowMessage(s1);


 
Fenik ©   (2003-07-20 21:25) [12]

http://delphibase.endimus.com/?action=viewfunc&topic=strchange&id=10352


 
Spawn ©   (2003-07-20 21:26) [13]

Упс ошибся))) Длину строки можно определить, например, Length(Memo1.Text)-1 или High(Memo1.Text)


 
panov ©   (2003-07-20 21:26) [14]

В примере:

case s[i] of
"a".."z","A".."Z","а".."я","А".."Я":
...



 
Relaxxx   (2003-07-20 22:28) [15]

Всем спасибо за ответы, разобрался!!!
Остался только последний маленький вопрос, как узнать есть ли указанное слово в Мемо например, я могу конечно разбить Мемо на слова и занести их в массив, а затем сравнить нужное слово со всеми елементами массива.
А может можно как то подругому.
Еще раз всем спасибо за помощ!!!


 
Palladin ©   (2003-07-20 22:36) [16]

В дополнение к г-ну Панову, прибавь еще символ "-" ибо такие слова тоже бывают, только смотри чтобы вокруг него небыло ниодного пробела

Зачем тебе сравнивать слово со всеми элементами массива, может ты просто найти его хочешь?
"Как?" это не вопрос, естественно в цикле, только я бы советовал использовать TStringList, его свойство Sorted и его метод Find, будет на порядок быстрее, даже больше чем на порядок


 
Романов Р.В. ©   (2003-07-20 22:45) [17]

Pos + TMemo.Text


 
Marser ©   (2003-07-20 22:52) [18]


> Романов Р.В. © (20.07.03 22:45)
> Pos + TMemo.Text

Njulf e; StrPos :-)


 
Marser ©   (2003-07-20 23:16) [19]


> Marser © (20.07.03 22:52)
>
> > Романов Р.В. © (20.07.03 22:45)
> > Pos + TMemo.Text
>
> Njulf e; StrPos :-)

Был неправ. Все-таки, Pos :-)



Страницы: 1 вся ветка

Текущий архив: 2003.08.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
14-10408
Opera
2003-07-17 11:53
2003.08.04
Image


3-10131
Apolon
2003-07-15 11:29
2003.08.04
Проверка обязательных полей базы данных отображенных на форме


1-10299
Pauk
2003-07-22 13:42
2003.08.04
Combobox и размещение DropedDown-списка


1-10252
gSergei
2003-07-21 13:57
2003.08.04
Поиск файла


3-10098
Spawn
2003-07-13 07:38
2003.08.04
Не могу вносить данные в НД