Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2009, 15:27   #1
Samopal
Пользователь
 
Аватар для Samopal
 
Регистрация: 23.12.2008
Сообщений: 24
По умолчанию Замена одного слова в string строке.

Народ HELP
Вот задача:
Код:
В тексте (массиве строк) сделать замену одного слова на другое.
Код:
program text;
uses crt;
var
	t: array[1..n] of string;
	s: string;
	i: integer;
begin
writeln('Vvedite text:');
for i:=1 to n do
	begin
		readln(t[i]);
	end;
writeln('Vvedite slovo:');
readln(s);
	for i:=1 to n do
		if s in t[i] then  {ТУТ ОШИБКУ ВЫДАЁТ... чёто ему не нравится....}
			begin {Процесс замены слов в строке}
			
                                          {ЧТО ТУТ НАПИСАТЬ ???? Я хз как заменить слово в строке}
			
			end
		else
			i:=i+1;
writeln('novy text:');
for i:=1 to n do
writeln(t[i]);
readln;
end.
помогите, очень нужно....
www.mybrest.net
Samopal вне форума Ответить с цитированием
Старый 14.04.2009, 16:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
if s in t[i] then
Ну надо так:
Код:
if s = t[i] then
или так:
Код:
if Pos(s,t[i])<>0 then
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2009, 17:27   #3
Samopal
Пользователь
 
Аватар для Samopal
 
Регистрация: 23.12.2008
Сообщений: 24
По умолчанию

Цитата:
Ну надо так:
Код:

if s = t[i] then
Если так то получится что вся строка должна быть равна одному слову...
Цитата:

или так:
Код:

if Pos(s,t[i])<>0 then
А так вроде бы то что надо но только проблемка другого плана.... Эта ботва работает с учётом регистра....



А вот как сделать замену лова 's' в строке 't[i]' ?? Причём тока одного слова?
www.mybrest.net
Samopal вне форума Ответить с цитированием
Старый 14.04.2009, 18:00   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Причём тока одного слова?
Находишь через pos его начало, потом находиш его конец, удаляешь через Delete и вставляешь новое слово.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2009, 19:58   #5
Samopal
Пользователь
 
Аватар для Samopal
 
Регистрация: 23.12.2008
Сообщений: 24
По умолчанию

Всё супер всё работает написал как ты сказал.. класс.. спасибо...
тока такая проблемка.. Он чуствителен к регистру и заменяет ко всему и и части слов...

вот например....

Ввожу текст:

priver vvv asdnjcnas jksdnvas
sndjkcnsdc privet jksndjkas
privetprivetprivet
Privet PRIVET priVet Privet
sjdcdhvasdjkvasd

Заменяемое слово: privet
Новое слово: poka

Получаю текст:

poka vvv asdnjcnas jksdnvas
sndjkcnsdc poka jksndjkas
pokapokapoka {тут он заменяет не только отдельные слова но и часть совпадающую...}
Privet PRIVET priVet Privet {тут он не заменяет это же слово тока с другим регистром}
sjdcdhvasdjkvasd

Текст программы:

Код:
program text;
uses crt;
const
	n=5;
var
	t: array[1..n] of string;
	s,ns: string;
	d,i,y: integer;
begin
clrscr;
writeln('Vvedite text:');
for i:=1 to n do
	begin
		readln(t[i]);
	end;
writeln('Vvedite zamenaymoe slovo:');
readln(s);
writeln('Vvedite novoe slovo:');
readln(ns);
d:=length(s);
	for i:=1 to n do
		if pos(s,t[i])<>0 then
			begin
			y:=pos(s,t[i]);
			delete(t[i],y,d);
			insert(ns,t[i],y);
			i:=i-1;
			end;
writeln('Novy text:');
for i:=1 to n do
writeln(t[i]);
readln;
end.
www.mybrest.net
Samopal вне форума Ответить с цитированием
Старый 14.04.2009, 23:58   #6
Samopal
Пользователь
 
Аватар для Samopal
 
Регистрация: 23.12.2008
Сообщений: 24
По умолчанию

Блин.... гавно...
надо полностью переделывать как то так чтобы процедура поиска слова была регистро не чуствительной... и чтобы части слова не заменялись... Как это сделать ?? а?
www.mybrest.net
Samopal вне форума Ответить с цитированием
Старый 16.04.2009, 17:21   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
чтобы процедура поиска слова была регистро не чуствительной
Превращай строку в большие символы с помошью UpCase посимвольно, потом уж поиск.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.04.2009, 07:52   #8
DARD
 
Регистрация: 19.04.2009
Сообщений: 4
По умолчанию

я писал прогу так, что он поределяет и меняет слова, а не части слов. А именно: я задал условие, что если перед либо после меняемого буквосочетания стоит пробел, то он считает его за слово и меняет. Кажется :
a:string;
b:=length(a);
if (b-1-a=' ')or(b+1=' ') then //и дальше он делает замену
DARD вне форума Ответить с цитированием
Старый 19.04.2009, 08:03   #9
DARD
 
Регистрация: 19.04.2009
Сообщений: 4
По умолчанию

вообщем вот то, что я сделал. Только здесь для pascal ABC и меняет он слова одинаковой длины:
-----------------------------------
uses crt;
var
b1,p1,t1,t2:integer;
a1,a2,symbol:string;
txt:string;
//----------------------------------
BEGIN
writeln('введите текст');
readln(txt);
writeln('введите заменяемое слово');
readln(a1);
writeln('введите заменяющее слово');
readln(a2);
//----------------------------------------
b1:=length(a1);
p1:=pos(a1,txt);
if length(a1)<>length(a2) then writeln('длины слов не равны')
else
begin
for t1:=1 to length(txt) do
begin
if (txt[p1-1]=' ') and (txt[p1+length(a1)]=' ') then
begin
delete(txt,p1,b1);
insert(a2,txt,p1);
p1:=pos(a1,txt);
end;
end;
end;
//------------------------------------
writeln('новый текст =',txt);
readln;
END.
DARD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена подстрок в строке по шаблону _SERGEYX_ Общие вопросы Delphi 0 08.09.2008 08:45
Замена слова в текстовом редакторе Славный Общие вопросы Delphi 6 06.06.2008 14:19
Замена многоточия одной точкой в строке S. Карась Помощь студентам 9 18.01.2008 18:13
[Delphi] Замена одного слова на другое... ZhooZhik Помощь студентам 5 09.01.2008 23:31
Замена одного элемента строки другим kkkggg PHP 1 18.10.2007 23:09