Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
ВнизКак найти слово в тексте если текст дан ввиде переменной string , Найти похожие ветки
← →
AlekseyK (2002-07-09 10:44) [0]и вытащить другое слово которое стоит например перед найденным словом. Спасибо.
← →
Виктор Щербаков (2002-07-09 10:47) [1]Для начала нужно дать определение слову.
← →
AFROLOV (2002-07-09 10:53) [2]Посмотри функцию Pos.
← →
AlekseyK (2002-07-09 10:53) [3]Я знаю что в тексте есть дапустим слово Delphi, мне нужен кусочек кода который бы выдавал бы мне слово стоящее перед словом Delphi
← →
Виктор Щербаков (2002-07-09 10:58) [4]Хорошо. Подойдем с другой стороны.
Чем могут быть разделены слова?
← →
AlekseyK (2002-07-09 11:07) [5]Пробелами и наверное знаками табуляции
← →
Виктор Щербаков (2002-07-09 11:20) [6]Отлично. Если ты определил множество символов-разделителей, то осталось реализовать считывание слов из строки. Т.е. непустая последовательность символов исходной строки, ограниченная спереди и сзади символами-разделителями и не содержащая символов-разделителей внутри и будет словом.
Нужно помнить предыдущее считанное слово. Только что считанное слово нужно сравнивать с искомым словом, и если они совпадут, выдавать запомненное предыдущее.
Надеюсь код не надо писать?
← →
Yuri-7 (2002-07-09 11:23) [7]Функцией Pos найди нужное слово, а затем посимвольно иди назад, анализируя пробелы
← →
AlekseyK (2002-07-09 11:28) [8]Теоретически понятно но практически... :))
Был бы благодарен если бы представили код
← →
AFROLOV (2002-07-09 11:49) [9]
var
i,p1,p2:integer;
S,s1:Srting;
flag:boolean;
S:="Borland Delphi";
p1:=pos("Delphi",S);
if p1>0 then
BEGIN
p2:=p1;
flag:=false;
for i=p1 downto 1 do
begin
//IsSeparator - функция которая определяет является ли символ разделителем слов
if not flag then
begin
if not IsSeparator(S[i]) then flag:=true;
continue;
end;
if IsSeparator(S[i]) and flag then
begin
break;
end else
begin
p2:=p2-1;
end;
end;
s1:=copy(S,p2,p2-p1);
end;
Примерно это выглядит так. Протестируй и доработай.
← →
Леха_ (2002-07-09 11:53) [10]QStrings решает эту и много других задачь
хотя искрине советую перед тем как использовать QStrings решить эту задачу самому
← →
AlekseyK (2002-07-09 12:09) [11]У меня почемуто Undeclared identifier: "IsSeparator"
← →
Anatoly Podgoretsky (2002-07-09 12:20) [12]А ты его определил?
← →
Виктор Щербаков (2002-07-09 12:21) [13]Объяви функцию для твоего множества символов-разделителей:
function IsSeparator(Ch: Char): boolean;
begin
Result := Ch in [" ", #9] // могут быть и другие ,.- и т.д.
end;
← →
xyz (2002-07-09 14:45) [14]Лучше всего, как мне кажется, написать модуль для работы со словами.
1. Измерение кол-ва слов в строке(кол-во пробелов+1).
2. Сделать функцию поиска слова и указания номера.
3. Возвращения слова по номеру.
4. И так далее..
← →
AlekseyK (2002-07-09 16:10) [15]Все работает всем спасибо
procedure TForm1.Button5Click(Sender: TObject);
var
a,i,p1,p2:integer;
S,s1:String;
begin
S:="Sreda programirovaniya Borland Delphi";
p1:=pos("Borland",S);
if p1>0 then
BEGIN
p2:=p1;
for i:=p1-2 downto 1 do
begin
//IsSeparator - функция которая определяет является ли символ разделителем
if not IsSeparator(S[i]) then begin continue; end;
if IsSeparator(S[i]) then
begin
p1:=i;
break;
end;
end;
s1:=copy(s,p1,p2-p1-1);
end;
label3.Caption:=s1;
end;
← →
Гас (2002-07-09 16:18) [16]В RxLib ведь это все давно реализовано..
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c