![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, как в полезную ф-ю commatext добавить др. разграничит [D5]
Yuraz © (2002-04-01 11:06:00)на скобки, кавычки, апострофы, или ещё лучше на всё кроме букв, а то по умолчанию она только на пробелы слова различает. Делал и так (где то здесь встретил, но всё равно точку не отделяет)
slist.text:=StringReplace(slist.text, "." , "," , [rfReplaceAll]);
Заранее спасибо.
Yuraz (2002-04-01 16:33:00) [1]Алекс, работает супер, с моими for не сравнить, спасибо!
Alx2 (2002-04-01 14:25:00) [2]Собственно и без CommaText код особо не загромождается:
Const ValidSet = ["a".."z", "A".."Z", "а".."я", "А".."Я"];
Var S: String;
K, len, Start: Integer;
Begin
S := Memo1.Text;
len := Length(S);
K := 1;
While K <= len Do
Begin
While (K <= len) And (Not (S[K] In ValidSet)) Do inc(K);
Start := K;
If Start > len Then break;
inc(K);
While (K <= len) And (S[K] In ValidSet) Do inc(K);
Memo2.Lines.Add(Copy(S, Start, K - Start));
End;
End;
MBo (2002-04-01 14:09:00) [3]вечный вопрос - что такое слова, какие могут быть знаки препинания и что считать разделителем слов.
Используй функцию Alx2,если надо, добавив цифры,
потом Commatext.
Yuraz (2002-04-01 13:52:00) [4]В общем нужно получить только слова (только слова, без знаков препинания) из Memo1, и перенести их в Memo2. Это уже сделал с помощью commatext, до этого делал в цикле, искал пробелы, после искомое очищал от кавычек, скобок и т.д. Может с commatext это красивее, но он не очищает от ненужных символов.
Alx2 (2002-04-01 13:49:00) [5]А если свое сделать:
Var S : String;
k : Integer;
begin
for k := 1 to Length(S) do
if not (S[k] in ["a".."z","A".."Z","а".."я","А".."Я"])
then S[k] := " ";
end;
MBo (2002-04-01 13:37:00) [6]ты объясни, что конкретно нужно сделать?
del_element:array [0..1] of char = (",",".");
это ты pchar объявил, он преобразуется в string ",."
откуда така последовательность возьмется?
Yuraz (2002-04-01 13:23:00) [7]MBo, подскажи как у тебя отделяет commatext все символы, кроме букв, я делаю так, с массивом не работает, без него работает, но тогда удаляется только точка.
slist.text:=StringReplace(slist.text, ".", "" ,[rfReplaceAll]);
а это с масивом
procedure TForm1.word1Click(Sender: TObject);
var i:integer;
slist:tstrings;
const
del_element:array [0..1] of char = (",",".");
begin
slist:=tstringlist.create;
slist.commatext:=memo1.Text;
slist.text:=StringReplace(slist.text, del_element, "" ,[rfReplaceAll]);
Nikolay M. (2002-04-01 11:35:00) [8]Посмотри ExtractWord из RX.
MBo (2002-04-01 11:11:00) [9]а у меня отделяет