Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Символ "ничего" в char, как осуществить? 
V
    Опции темы
Mpak
Дата 13.5.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: 4
Всего: 7



В общем написал функцию замены символа
Код

AnsiString str_replace(char first, char second, AnsiString string)
{
for (int i = 1; i <= string.Length(); i++)
 { if (string[i] == first)
    { string.Delete(i, 1); string.Insert("_", i); }
 }
return string;
}
//-------------------------------------------------------------------------------
//Вызываю на замену ':' на ''
str_replace(':','',logfile);


соответственно билдер ругается, что значение (or empty)

Как сделать?


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
mrbrooks
Дата 13.5.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Имхо а функция StringReplace родная Бормоновская тебе не подойдет?
Или ты чисто из спортивного интереса?  smile 
PM MAIL   Вверх
ksili
Дата 13.5.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 1
Всего: 17



А так:
Код

AnsiString str_replace(char first, char second, AnsiString string)
{
for (int i = 1; i <= string.Length(); i++)
 { if (string[i] == first)
    { string[i]=second; }
 }
return string;
}
//-------------------------------------------------------------------------------
//Вызываю на замену ':' на ''
str_replace(':','',logfile);



Это сообщение отредактировал(а) ksili - 13.5.2008, 12:43


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
mrbrooks
Дата 13.5.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Комрады но сами посудите что мы велик то строим

Код

String str = "Hello:fucking:world:", str1;
str1 = StringReplace(str,':','$',TReplaceFlags()<<rfReplaceAll);
ShowMessage(str1);


Ответ - Hello$fucking$world$ -  smile

Добавлено через 11 минут и 58 секунд
В случае Mpak

Код

String str = "Hello:fucking:world:", str1;
str1 = StringReplace(str,':',"",TReplaceFlags()<<rfReplaceAll);
ShowMessage(str1);


Ответ - Hellofuckingworld

PM MAIL   Вверх
Mpak
Дата 13.5.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: 4
Всего: 7



Где-то видел замечательную цитату и полностю с ней согласен:
Цитата
Процесс написания своего велосипеда повышает профессиональный уровень программиста. ©


А если честно, я просто не нашел функцию) 
За функцию спасибоsmile

вопрос остается открытым: так как заменить на "ничто"?
чтобы результатом запроса:
String str = "Hello:fucking:world:";
было
Hellofuckingworld


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
ksili
Дата 13.5.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 1
Всего: 17



Mpak, читай чуть выше


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
mrbrooks
Дата 13.5.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



 Mpak для твоего случая я добавил в моем посте. Повторюсь  smile 

Код

String str = "Hello:fucking:world:", str1;
str1 = StringReplace(str,':',"",TReplaceFlags()<<rfReplaceAll);
ShowMessage(str1);


Ответ - Hellofuckingworld
PM MAIL   Вверх
ama_kid
Дата 13.5.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Mpak @  13.5.2008,  13:05 Найти цитируемый пост)
вопрос остается открытым: так как заменить на "ничто"?
Ответь сначала на детский вопрос: зачем тебе второй параметр "char second", если ты его не используешь в своей функции?



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: 4
Всего: 7



Извините, видать разошлись во времени не много..
А опять изобрел свой велосипедsmile Как всегда корявый)
Сделал пометкой $ удаление символа. Мысль была еще одну функцию написать smile
Код

AnsiString str_replace(char first, char second, AnsiString string)
{
for (int i = 1; i <= string.Length(); i++)
 { if (string[i] == first)
    { if (second == '$')
       { string.Delete(i,1); }
      else
       { string[i] = second; }
    }
 }
return string;
}


Добавлено через 2 минуты и 18 секунд
Цитата(ama_kid @  13.5.2008,  16:43 Найти цитируемый пост)
Ответь сначала на детский вопрос: зачем тебе второй параметр "char second", если ты его не используешь в своей функции?

Как не использую? Я же функцию писал не под одно действие. Есть случаи, когда мне надо определенный символ заменить на другой.
например:
str = str_replace("<", "(", str);


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
maxim1000
Дата 13.5.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



а зачем делать второй аргумент char?
AnsiString тут вполне бы подошёл...


--------------------
qqq
PM WWW   Вверх
Mpak
Дата 15.5.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: 4
Всего: 7



Насколько я понимаю char, как раз, расчитан на размер одного символа, или я ошибаюсь?


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
baldina
Дата 15.5.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 1
Всего: 101



Mpak, правильно поставленный вопрос - половина ответа.
в твоём случае ты хочешь удалить символ, а не заменить его (не бывает "пустого символа", так же как и "пустого целого". вот "пустое множество" бывает - например, пустая строка "").
давно замечено, что для решения каждой задачи лучше использовать свой функционал. т.е. иметь как функцию replace(), так и remove().

кстати, для произвольных операций над строкой (поиск/замена/удаление) разработаны общие механизмы, использующие регулярные выражения.
PM MAIL   Вверх
Mpak
Дата 15.5.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: 4
Всего: 7



baldina, благодарю за пояснения, тема закрытаsmile


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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