Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Replace. исправляю email / 25 сообщений из 33, страница 1 из 2
14.08.2012, 19:09
    #37916588
dsmart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Хочу заменить строку .r на .ru (для email адресов), просто сделать replace(".r", ".r", ".ru") не получается. т.к. в случае если все таки .ru, получается .ruu
Подскажите решение пожалуйста.
...
Рейтинг: 0 / 0
14.08.2012, 19:11
    #37916591
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Код: vbnet
1.
replace(replace(replace(Str, ".ru", "@#@"),".r", ".ru"), "@#@", ".ru")
...
Рейтинг: 0 / 0
15.08.2012, 10:40
    #37917089
dsmart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
То есть заменить символ ru на что то еще. А другие варианты есть? просто у меня много разных возможных замен и такая подстановка может помешать отработать остальным проверкам.
...
Рейтинг: 0 / 0
15.08.2012, 10:42
    #37917095
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
dsmartТо есть заменить символ ru на что то еще. А другие варианты есть? просто у меня много разных возможных замен и такая подстановка может помешать отработать остальным проверкам.
чем она может "помешать" ?
...
Рейтинг: 0 / 0
15.08.2012, 10:43
    #37917102
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
> у меня много разных возможных замен

Тогда регулярные выражения.
...
Рейтинг: 0 / 0
15.08.2012, 10:43
    #37917103
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
dsmartТо есть заменить символ ru на что то еще. А другие варианты есть? просто у меня много разных возможных замен и такая подстановка может помешать отработать остальным проверкам. не вижу, чем она могла бы помешать, ну раз так принципиально - подключать библиотеку и юзать RegExp - примеры есть на форуме.
...
Рейтинг: 0 / 0
15.08.2012, 10:50
    #37917119
dsmart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Возможно просто не догоняю.
Я сделал список ошибок и рядом столбец как выглядит исправленный вариант.
С помощью replace проверяю на наличие в первом столбце если соответствие есть заменяю на второй.
А из предложенного варианта мне придется для каждой замены писать свое выражение.
...
Рейтинг: 0 / 0
15.08.2012, 10:56
    #37917133
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Кто мешает использовать эту формулу для всех вариантов?

И опять же, тут уже возникает минимум ДВА столбца - ".r" как слово для замены и ".ru" - исключение. Ну, соответственно, будет учитываться для любого варианта
...
Рейтинг: 0 / 0
15.08.2012, 11:00
    #37917138
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
dsmartВозможно просто не догоняю.
да, железно - "не догоняеш"
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub test()
    Dim s As String
    Dim i As Long
    Dim ar1, ar2
    ar1 = Array(".r", ".u", ".e")
    ar2 = Array(".ru", ".ua", ".en")
    s = "haba-haba.r haba-haba.ru haba-haba.u haba-haba.ua haba-haba.e haba-haba.en"
    For i = LBound(ar1) To UBound(ar1)
        Debug.Print s
        s = Replace(Replace(Replace(s, ar2(i), "@#@"), ar1(i), ar2(i)), "@#@", ar2(i))
    Next i
    Debug.Print s
End Sub


Код: vbnet
1.
2.
3.
4.
5.
test
haba-haba.r haba-haba.ru haba-haba.u haba-haba.ua haba-haba.e haba-haba.en
haba-haba.ru haba-haba.ru haba-haba.u haba-haba.ua haba-haba.e haba-haba.en
haba-haba.ru haba-haba.ru haba-haba.ua haba-haba.ua haba-haba.e haba-haba.en
haba-haba.ru haba-haba.ru haba-haba.ua haba-haba.ua haba-haba.en haba-haba.en
...
Рейтинг: 0 / 0
15.08.2012, 11:06
    #37917156
dsmart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Я думал что есть вариант с поиском окончания строки. та же ситуация возникает например с xxx@mail вместо xxx@mail.ru
Как это обработать?
...
Рейтинг: 0 / 0
15.08.2012, 11:13
    #37917166
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
dsmartЯ думал что есть вариант с поиском окончания строки. та же ситуация возникает например с xxx@mail вместо xxx@mail.ru
Как это обработать?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    ar1 = Array(".r", ".u", ".e", "mail")
    ar2 = Array(".ru", ".ua", ".en", "mail.ru")
...
test
haba-haba.r haba-haba.ru haba-haba.u haba-haba.ua haba-haba.e haba-haba.en xxx@mail вместо xxx@mail.ru
haba-haba.ru haba-haba.ru haba-haba.u haba-haba.ua haba-haba.e haba-haba.en xxx@mail вместо xxx@mail.ru
haba-haba.ru haba-haba.ru haba-haba.ua haba-haba.ua haba-haba.e haba-haba.en xxx@mail вместо xxx@mail.ru
haba-haba.ru haba-haba.ru haba-haba.ua haba-haba.ua haba-haba.en haba-haba.en xxx@mail вместо xxx@mail.ru
haba-haba.ru haba-haba.ru haba-haba.ua haba-haba.ua haba-haba.en haba-haba.en xxx@mail.ru вместо xxx@mail.ru
...
Рейтинг: 0 / 0
15.08.2012, 11:19
    #37917178
dsmart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
qwerty112 Shocker.Pro

Спасибо ) Вроде ясно.
...
Рейтинг: 0 / 0
15.08.2012, 11:21
    #37917182
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
вот так, только, навсякий
Код: vbnet
1.
2.
    ar1 = Array(".r", ".u", ".e", "@mail")
    ar2 = Array(".ru", ".ua", ".en", "@mail.ru")
...
Рейтинг: 0 / 0
15.08.2012, 13:21
    #37917501
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
qwerty112вот так, только, навсякий
Код: vbnet
1.
2.
    ar1 = Array(".r", ".u", ".e", "@mail")
    ar2 = Array(".ru", ".ua", ".en", "@mail.ru")



на всякий ...
Код: vbnet
1.
2.
3.
4.
s = "qwe.rty112@mail.ru"

'в результате работы функции получим
qwe.ruty112@mail.ru

...
Рейтинг: 0 / 0
15.08.2012, 16:46
    #37918063
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
проверять, имеется ли правее кандидата в исправление собачка. если да, то замена не производится.
...
Рейтинг: 0 / 0
15.08.2012, 16:51
    #37918077
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Qlewerпроверять, имеется ли правее кандидата в исправление собачка. если да, то замена не производится.А если в имени домена есть ".r", умник?
...
Рейтинг: 0 / 0
15.08.2012, 17:28
    #37918189
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Shocker.ProQlewerпроверять, имеется ли правее кандидата в исправление собачка. если да, то замена не производится.А если в имени домена есть ".r", умник? приведи пример
если есть такие, то проверять ещё и наличие точки справа. если есть, то не исправлять
...
Рейтинг: 0 / 0
15.08.2012, 17:34
    #37918202
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
я бы лично делал совсем по-другому. проверял, что ".r" стоит в конце записи. просто. сердито. эффективно
...
Рейтинг: 0 / 0
15.08.2012, 17:43
    #37918221
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
QlewerShocker.Proпропущено...
А если в имени домена есть ".r", умник? приведи пример
Ничто мне не мешает в моём домене domen.my создать субдомен r.r.r.r.r.domen.my и повесить на него почтарь.

Qlewerя бы лично делал совсем по-другому. проверял, что ".r" стоит в конце записи. просто. сердито. эффективно
Угу... вот только как ты определишь "конец записи", хотелось бы знать? только не спеши... почитай ещё раз RFC-шку по e-mail-адресам...
...
Рейтинг: 0 / 0
15.08.2012, 17:45
    #37918226
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Akina,

len - узнаём длину строки
mid - узнаём последние символы. не?
...
Рейтинг: 0 / 0
15.08.2012, 17:48
    #37918237
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
C концом строки можно проще:
Код: vbnet
1.
Replace(Replace(Str+"#@#",".r#@#",".ru"),"#@#","")
...
Рейтинг: 0 / 0
15.08.2012, 17:56
    #37918254
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Shocker.Pro,

вот я тоже думаю, что так было бы проще и правильней всего. по концу строки. а не относительно посторонних символов
...
Рейтинг: 0 / 0
15.08.2012, 18:27
    #37918299
dsmart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Ага есть проблемы с обработкой .r и когда домен вообще не указан, например, просто gmail
Сейчас емейл разделил на две части, до собаки и после, обрабатываю их отдельно.
Когда нету точки после собаки делаю исключение, обрабатываю вручную.
...
Рейтинг: 0 / 0
15.08.2012, 18:30
    #37918302
dsmart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
И кстати подскажите пожалуйста что означает #@#, поисковики не ищут такой набор символов.
...
Рейтинг: 0 / 0
15.08.2012, 19:05
    #37918330
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Replace. исправляю email
Qlewerlen - узнаём длину строки
mid - узнаём последние символы. не?
При условии, что один мыл - одна строка... и одна строка - только один мыл, без нифига... что далеко не факт.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Replace. исправляю email / 25 сообщений из 33, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]