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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.009 c
1-10207
Salvator
2003-07-20 13:30
2003.08.04
Обращение к метке


1-10281
Beginner3000
2003-07-16 00:42
2003.08.04
Вопросы по строкам


14-10376
Soft
2003-07-16 14:55
2003.08.04
Мышки и клавы


7-10471
Senka
2003-05-23 13:40
2003.08.04
Простите за глупый вопрос о СОМ порте


6-10337
MetalFan
2003-05-29 12:31
2003.08.04
ServerSocket&ClientSocket





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