Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена пробелов из строке 
:(
    Опции темы
gambit
Дата 17.1.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



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

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

а должно 

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

Помогите уже всю голову изомал.
PM MAIL ICQ Skype   Вверх
ama_kid
Дата 17.1.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



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


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
gambit
Дата 17.1.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



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;

PM MAIL ICQ Skype   Вверх
MetalFan
Дата 17.1.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



или опять же регулярочки))))


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.