![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| h2o |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
Вот вопрос, у меня есть строка типа: "привет №3 & hello%" ну чёнибудь типа такого
а мне нужно взять эту строку и убрать оттуда ненужные символы (или заменить их на другие) к примеру:
ну например емли удаляем, то оставляем пробел, а если заменяем, то на нижнее подчёркивание "_". И как это сделать? --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
| Satana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 1 Всего: 5 |
можно в цикле делать чтото наподобие такого:
Вот и все. Остальные символы трогаться не будут. -------------------- |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
StringReplace используй
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| h2o |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
Satana Как ты написал так не работает!
Rennigth а это как? --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Верно будет так
Это сообщение отредактировал(а) alexeis1 - 16.11.2005, 13:56 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| h2o |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
оп, всё разобрался! надо просто было вот так:
Добавлено @ 14:00 alexeis1 точно! и так работает! тока без "(" тоесть:
Добавлено @ 14:03 всем спасибо! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
||||
|
|||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Ё-моё! Rennigth наверно никто не услышал.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
Poseidon
ток в даном случаи лучше и проще и красиве
чем для каждого из символов вызывать StringReplace |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
А теперь представим, что length(string) у нас ой какое большое. Может даже в int64 не влезет. Тогда что? ИМХО, надежней так:
Пусть строчек и больше, зато они не в цикле (т.е срабатывают только один раз). -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| maxim1000 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
зато каждая строчка содержит цикл данный вариант будет выполняться приблизительно в 12 раз медленнее...
тогда такая строка не поместится даже в адресном пространстве 64-битного компьютера, кроме того это создаст проблемы и для работы StringReplace... -------------------- qqq |
||||
|
|||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
Poseidon
тоже цикл и даже ещё вызов AnsiPos,Copy,Length на каждом шаге цикла Это сообщение отредактировал(а) FRAGNATIC - 17.11.2005, 23:40 |
|||
|
||||
| Satana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 1 Всего: 5 |
h2o
Ты можешь использовать и так как я сказал (и я был первым только под blabla я подразумевал множество) по идее должно было выглядеть так:
Это сообщение отредактировал(а) Satana - 18.11.2005, 00:38 -------------------- |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
FRAGNATIC
maxim1000 В принципе согласен с вами что со StringReplace скорее всего будет работать медленнее, писал как вариант -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
да... похоже, погорячился в 12 раз тормозить не будет но всякие организационные действия, связанные с проходом по сроке, все равно занимают больше времени, чем организация прохода по небольшому массиву, заданому множеством... -------------------- qqq |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
maxim1000
разница в пользу первого варианта где-то в 250-300 раз. цыфры: тест1. 93 против 26532 тест2. 94 против 26469 тест3. 94 против 26906 если честно я в шоке немного... За такие мои советы мне минус в репу стоилобы влепить Это сообщение отредактировал(а) Rennigth - 18.11.2005, 17:15 -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
ого... как минимум удивительно... только вопросик один: в первом варианте используется множество из 11 (если не обсчитался) символов во втором - из... (не... тут уж точно обсчитаюсь) кучи символов порядок времени и там, и там, ИМХО, будет n*m n - длина обрабатываемой строки m - длина множества всякими приемчиками (например, за счет дополнительной памяти), его можно свести к n, но этот случай пока не рассматриваем так что у нас n*m тогда для хорошего теста желательно, чтобы все - и строка, и множество были одинаковыми вообще тут рассчеты получаются такие: a - время работы варианта на StringReplace: a=m*(b*n+c) b - время на обработку одного символа (включая всякие счетчики цикла, доставание и сохранение символов в памяти) c - время на организационные действия (копирование строк, работа с параметрами в начале и в конце функции) d - время работы варианта на множествах: d=c+n*(b*m+e) e - время на сохранение и доставание множества их памяти, скорее всего все сводится к тому, что оно просто хранится где-то в в каокй-нибудь регистр заносится указатель на него... по идее оно должно быть и в варианте StringReplace - иначе придется при каждом изменении множества идти и править код - это ужас... так что можно даже так написать: a=m*(b*n+c)+e вот и получается: вариант с StringReplace: m*b*n+m*c+e вариант с множествами: n*b*m+n*e+c т.е. вся разница кроется в (m*c+e)<>(n*e+c) или (m-1)*c <> (n-1)*e какое больше, тот вариант и длиннее так что при маленьких m и больших n вполне может оказаться, что лучше вариант с StringReplace... Добавлено @ 17:53 так что с минусом не спеши -------------------- qqq |
|||
|
||||
| h2o |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
Всё понятно! ну вот я вот так сделал:
всё панятно, и дпже чуть больше... спасибо всем! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |