Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Замена пробелов из строке


Автор: gambit 17.1.2008, 13:28
Помогите пож с алгоритмом, уже всю голову изломал
Есть строка в которой передается команда и параметры, хотел сделать так чтобы строка делилась по прлбелам на массив (первый элемент массива команда все остальные параметры), параметров может быть сколько угодно. Но столкнулся с проблемой если параметр состоит из нескольких слов то он делится на разные параметры. Решил такие параметры передавать в кавычках а строку делить по какому нибудь редкому символу например ^. Так вот задача как мне заменить в строке все пробелы кроме тех которые в кавычках??
Пример
message "привет пупкин", ляляшкин
У меня получается после замены 

message^"привет^пупкин",^ляляшкин

а должно 

message^"привет пупкин",^ляляшкин

Помогите уже всю голову изомал.

Автор: ama_kid 17.1.2008, 14:03
Цитата(gambit @  17.1.2008,  13:28 Найти цитируемый пост)
как мне заменить в строке все пробелы кроме тех которые в кавычках??
Отказаться от стандартных StrPos (и иже с ним) и написать свою функцию замены символа. Встретил кавычку - взводи флаг, пока флаг взведен - не меняешь символы, встретил кавычку и флаг взведен - сбрасывай флаг... И так по всей длине строки...

Автор: gambit 17.1.2008, 16:44
ama_kid, спасибо за научный толчек, после твоего поста в течении 5 минут написал алгоритм.
Может кому пригодится.
Код

function posstring(s:string):string;
var i:integer;
b:boolean;
begin
b:=false;
for i:=0 to length(s)-1 do
begin
if s[i]='"' then  b:= not b;
if (s[i]=' ') and (b=false) then  s[i]:='^';
result:=s;
end;
end;

Автор: MetalFan 17.1.2008, 17:07
или опять же регулярочки))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)