Можно ли осуществить replace из диапазона?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Можно ли осуществить replace из диапазона?

Сообщение kibernetics » 23.09.2009 (Ср) 21:07

Может кто-нибудь знает механизм, как лучше сделать replace текста из диапазаона?
т.е. у меня есть диапазон chr(77) - chr(93), мне нужно каждый чар в строке, найденный из диапазона, заключить в скобки,
результат примерно такой должен быть:
sText = Replace(sText, Chr(77), "(" & Chr(77) & ")")
...
sText = Replace(sText, Chr(93), "(" & Chr(93) & ")")


решение я вижу только перебор диапазона поштучно, типа For i=77 Тo 93 ... Next
а сразу никак нельзя работать с диапазоном?
Может есть какойто вид наподобие:
sText = Replace(sText, (Like 77-93), "(" & (Like 77-93) & ")")
???

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Можно ли осуществить replace из диапазона?

Сообщение Debugger » 23.09.2009 (Ср) 21:18

Можно написать свой Replace - это будет и быстрее, и гибче. Можно цикл+Mid$, а можно посмотреть статьи у Хакера (у него там есть про замену символа).

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Можно ли осуществить replace из диапазона?

Сообщение kibernetics » 23.09.2009 (Ср) 21:23

нет. что-то не то,
явно должно быть что-то с диапазонами

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Можно ли осуществить replace из диапазона?

Сообщение iGrok » 23.09.2009 (Ср) 21:27

Debugger писал(а):Можно написать свой Replace - это будет и быстрее, и гибче. Можно цикл+Mid$, а можно посмотреть статьи у Хакера (у него там есть про замену символа).

У него про замену символа на символ, а не про замену символа на три символа. Mid$ - туда же. Всё равно длина строки меняется. Да и это не упрощение кода, а оптимизация по времени и скорости. Кода там только больше будет.

Для замены по диапазону символов можно заюзать RegExp.Replace.
Код: Выделить всё
Public Sub rr()
Dim rx As New RegExp
    rx.Global = True
    rx.IgnoreCase = True
    rx.Pattern = "([a-c])"
    Debug.Print rx.Replace("bdcawcawz", "($1)")
End Sub

З.Ы. References -> Microsoft VBScript Regular Expressions 5.5
label:
cli
jmp label

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Можно ли осуществить replace из диапазона?

Сообщение kibernetics » 23.09.2009 (Ср) 22:04

iGrok, хорошо, если возможен только регекс,
не мог бы подсказать синтаксис, как скомпоновать несколько диапазонов из chrw?
например, мне надо найти все chrw(1040) - chrw(1050); chrw(1052); chrw(1055) - chrw(1057);

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Можно ли осуществить replace из диапазона?

Сообщение iGrok » 23.09.2009 (Ср) 22:11

kibernetics писал(а):iGrok, хорошо, если возможен только регекс,
не мог бы подсказать синтаксис, как скомпоновать несколько диапазонов из chrw?
например, мне надо найти все chrw(1040) - chrw(1050); chrw(1052); chrw(1055) - chrw(1057);

А прям так: [a-ceg-joq-v].

Т.е. как-то так в твоём случае:
Код: Выделить всё
Public Sub rr()
Dim rx As New RegExp
    rx.Global = True
    rx.IgnoreCase = True
    rx.Pattern = "([" & ChrW(1040) & "-" & ChrW(1050) & ChrW(1052) & ChrW(1055) & "-" & ChrW(1057) & "])"
    Debug.Print rx.Replace("bdc" & ChrW(1043) & "awc" & ChrW(1048) & "aw" & ChrW(1055) & "z", "($1)")
End Sub
label:
cli
jmp label

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Можно ли осуществить replace из диапазона?

Сообщение kibernetics » 24.09.2009 (Чт) 9:22

iGrok, огромадное гранмерси!
вроде срабатывает что нужно,
только мне надо немного наоборот.
т.е. реплейсить все, кроме указанных в диапазоне.
можно ли както указать отрицание?
чтото вроде: "[!Chrw(1040)-Chrw(1050)]"

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Можно ли осуществить replace из диапазона?

Сообщение iGrok » 24.09.2009 (Чт) 13:01

kibernetics писал(а):iGrok, огромадное гранмерси!
вроде срабатывает что нужно,
только мне надо немного наоборот.
т.е. реплейсить все, кроме указанных в диапазоне.
можно ли както указать отрицание?
чтото вроде: "[!Chrw(1040)-Chrw(1050)]"

Ну вот почитал бы хоть сам про рег. выражения. И на основном сайте статья есть, и вообще инфы куча в нете.
Даже в вики есть более-менее подробное описание!
Вот так: [^a-c]
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Можно ли осуществить replace из диапазона?

Сообщение Хакер » 25.09.2009 (Пт) 6:34

Мне нравится постановка вопросов от kibernetics: "Может кто-нибудь знает"...
Как будто здесь собрались одни дебилы-от-программирования, и с высокой долей вероятности действительно может оказаться так, что никто и не знает...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Можно ли осуществить replace из диапазона?

Сообщение kibernetics » 25.09.2009 (Пт) 17:50

Хакер, ты стал слишком категоричен.
Доходит до дого, что у тебя вопросы и предложения должны быть строго типизированы.
В жизни нужно разделять байты от бесед.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Можно ли осуществить replace из диапазона?

Сообщение Хакер » 25.09.2009 (Пт) 18:31

Не имеет значения, категорчен я, маразмотичен, ограничен, что-то иное или вообще не существую. Это никак не влияет на то, что ты систематически задаёшь наипростейшие (по сравнению со средним уровнем форума) вопросы, снабжая их формулировкой "может кто-нибудь знает". Это такой прикол, фишка, стиль, или ты действительно считаешь, что здесь все такие дураки, а твои вопросы такие сложные?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Можно ли осуществить replace из диапазона?

Сообщение alibek » 25.09.2009 (Пт) 19:00

Эта такая вводная фраза.
Lasciate ogni speranza, voi ch'entrate.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Можно ли осуществить replace из диапазона?

Сообщение kibernetics » 25.09.2009 (Пт) 21:13

Я вовсе не считаю, что здесь все дураки,
более того, я считаю, что это один из самых сильнейших форумов по вб,
а постановка вопроса, это действительно один из подвидов вводных фраз.
А задаю я простейшие(по-твоему суждению) вопросы, потому что, зачастую
делаю группу слабосвязанных между собой задач, и иногда очень сильно ухожу в какую-то из них,
теряя из виду казалось бы элементарные вещи.

Не предлагаешь же ты задавать вопросы на форуме по шаблону :?: :!:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 80

    TopList  
cron