Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для mostApi
8 / 6 / 0
Регистрация: 15.05.2015
Сообщений: 350

Uri перебором словаря

03.02.2016, 09:04. Показов 1622. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, написал фунцию перевода Кирилицы словарем в Uri, все работает, но пропускает пару букв...
Не могу понять где ошибка! Прошу помощи....

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Option Explicit
 
Sub Test()
    MsgBox (NovoSearch("Чнаваян Н.В."))
End Sub
 
Function NovoSearch(Name As String) As String
Dim sLw, i, e As Integer
Dim sName, x, y, result As String
Dim Dic As Object
'sName = UCase(Name) 'поднимаем буквы в верхний регистр
sLw = Len(Name) 'считаем количество символов
 
Set Dic = CreateObject("Scripting.Dictionary") 'формируем словарь
    With Dic
        .Add "%E0", "а"
        .Add "%E1", "б"
        .Add "%E2", "в"
        .Add "%E3", "г"
        .Add "%E4", "д"
        .Add "%E5", "е"
        .Add "%E6", "ж"
        .Add "%E7", "з"
        .Add "%E8", "и"
        .Add "%E9", "й"
        .Add "%EA", "к"
        .Add "%EB", "л"
        .Add "%EC", "м"
        .Add "%ED", "н"
        .Add "%EE", "о"
        .Add "%EF", "п"
        .Add "%F0", "р"
        .Add "%F1", "с"
        .Add "%F2", "т"
        .Add "%F3", "у"
        .Add "%F4", "ф"
        .Add "%F5", "х"
        .Add "%F6", "ц"
        .Add "%F7", "ч"
        .Add "%F8", "ш"
        .Add "%F9", "щ"
        .Add "%FA", "ъ"
        .Add "%FB", "ы"
        .Add "%FC", "ь"
        .Add "%FD", "э"
        .Add "%FE", "ю"
        .Add "%FF", "я"
        .Add "%C0", "А"
        .Add "%C1", "Б"
        .Add "%C2", "В"
        .Add "%C3", "Г"
        .Add "%C4", "Д"
        .Add "%C5", "Е"
        .Add "%C6", "Ж"
        .Add "%C7", "З"
        .Add "%C8", "И"
        .Add "%C9", "Й"
        .Add "%CA", "К"
        .Add "%CB", "Л"
        .Add "%CC", "М"
        .Add "%CD", "Н"
        .Add "%CE", "О"
        .Add "%CF", "П"
        .Add "%D0", "Р"
        .Add "%D1", "С"
        .Add "%D2", "Т"
        .Add "%D3", "У"
        .Add "%D4", "Ф"
        .Add "%D5", "Х"
        .Add "%D6", "Ц"
        .Add "%D7", "Ч"
        .Add "%D8", "Ш"
        .Add "%D9", "Щ"
        .Add "%DA", "Ъ"
        .Add "%DB", "Ы"
        .Add "%DC", "Ь"
        .Add "%DD", "Э"
        .Add "%DE", "Ю"
        .Add "%DF", "Я"
        .Add ".", "."
        .Add "+", " "
        .Add "%A8", "Ё"
        .Add "%B8", "ё"
        .Add "%2B", "+"
        .Add "%25", "%"
        .Add "%26", "&"
    End With
    
        For i = 1 To sLw 'перебираем словарь
            y = Mid(Name, i, 1)
            For Each x In Dic.Keys
            If Dic(x) = y Then
                Dic(x) = x
                Exit For
            End If
            Next
            result = result + x 'формируем ответ
        Next i
    
NovoSearch = result 'результат
 
End Function
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.02.2016, 09:04
Ответы с готовыми решениями:

Таймаут при обходе словаря c URI
Приветствую! Проблема: Есть словарь, откуда в цикле извлекаются подстроки URI, переформатируются в сам URI, далее составляется...

Как правильно создать файл из Uri или Uri.getPath() для отправки на сервер?
Есть Uri, полученный после выбора файлов в галерее. Uri вроде правильный:...

Из словаря создается объект, именами атрибутов которого будут ключи словаря
Из словаря создается объект, именами атрибутов которого будут ключи словаря, а значениями - значения из словаря по заданным ключам (a,b,c),...

10
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
03.02.2016, 09:24
Зачем в процессе изменяете словарь?
0
 Аватар для mostApi
8 / 6 / 0
Регистрация: 15.05.2015
Сообщений: 350
03.02.2016, 09:28  [ТС]
В слове 12 букв, при переборе на выходе 10, 2 буквы куда-то пропадают!((

Добавлено через 32 секунды
Hugo121, всмысле изменяю словать? Ищу в нем, выбираю и все...

Добавлено через 15 секунд
Hugo121, или я чет с циклом намудрил?

Добавлено через 2 минуты
Hugo121, все, понял.., спасибо... (П.С. ночью сидел голову ломал где натупил, нашел, спс))..

Добавлено через 29 секунд
Visual Basic
1
2
3
4
5
6
7
8
9
        For i = 1 To sLw 'перебираем словарь
            y = Mid(Name, i, 1)
            For Each x In Dic.Keys
            If Dic(x) = y Then
                Exit For
            End If
            Next
            result = result + x 'формируем ответ
        Next i
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,937
Записей в блоге: 4
03.02.2016, 09:35
попробуйте поймать--какие
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
For i = 1 To sLw 'перебираем словарь
            y = Mid(Name, i, 1)
            Dim jfind
            jfind = 0
            For Each x In Dic.Keys
            If Dic(x) = y Then
                'Dic(x) = Dic(x) + 1
                jfind = 1
                ''Debug.Print y, Dic(x)
                Exit For
            End If
            Next
            If jfind = 0 Then
            result = result & y 'формируем ответ
            
            End If
        Next i
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
03.02.2016, 09:49
Думаю так хотели? Там ещё и в объявлении переменных были недоработки.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Function NovoSearch(Name As String) As String
Dim sLw&, i&
Dim sName$, x$, y$, result$
Dim Dic As Object
sLw = Len(Name) 'считаем количество символов
 
Set Dic = CreateObject("Scripting.Dictionary") 'формируем словарь
    With Dic
.Item("а") = "%E0"
.Item("б") = "%E1"
.Item("в") = "%E2"
.Item("г") = "%E3"
.Item("д") = "%E4"
.Item("е") = "%E5"
.Item("ж") = "%E6"
.Item("з") = "%E7"
.Item("и") = "%E8"
.Item("й") = "%E9"
.Item("к") = "%EA"
.Item("л") = "%EB"
.Item("м") = "%EC"
.Item("н") = "%ED"
.Item("о") = "%EE"
.Item("п") = "%EF"
.Item("р") = "%F0"
.Item("с") = "%F1"
.Item("т") = "%F2"
.Item("у") = "%F3"
.Item("ф") = "%F4"
.Item("х") = "%F5"
.Item("ц") = "%F6"
.Item("ч") = "%F7"
.Item("ш") = "%F8"
.Item("щ") = "%F9"
.Item("ъ") = "%FA"
.Item("ы") = "%FB"
.Item("ь") = "%FC"
.Item("э") = "%FD"
.Item("ю") = "%FE"
.Item("я") = "%FF"
.Item("А") = "%C0"
.Item("Б") = "%C1"
.Item("В") = "%C2"
.Item("Г") = "%C3"
.Item("Д") = "%C4"
.Item("Е") = "%C5"
.Item("Ж") = "%C6"
.Item("З") = "%C7"
.Item("И") = "%C8"
.Item("Й") = "%C9"
.Item("К") = "%CA"
.Item("Л") = "%CB"
.Item("М") = "%CC"
.Item("Н") = "%CD"
.Item("О") = "%CE"
.Item("П") = "%CF"
.Item("Р") = "%D0"
.Item("С") = "%D1"
.Item("Т") = "%D2"
.Item("У") = "%D3"
.Item("Ф") = "%D4"
.Item("Х") = "%D5"
.Item("Ц") = "%D6"
.Item("Ч") = "%D7"
.Item("Ш") = "%D8"
.Item("Щ") = "%D9"
.Item("Ъ") = "%DA"
.Item("Ы") = "%DB"
.Item("Ь") = "%DC"
.Item("Э") = "%DD"
.Item("Ю") = "%DE"
.Item("Я") = "%DF"
.Item(".") = "."
.Item(" ") = "+"
.Item("Ё") = "%A8"
.Item("ё") = "%B8"
.Item("+") = "%2B"
.Item("%") = "%25"
.Item("&") = "%26"
    
        For i = 1 To sLw 'перебираем словарь
            y = Mid(Name, i, 1): x = y
If .exists(y) Then x = .Item(y)
            result = result + x 'формируем ответ
        Next i
End With
NovoSearch = result 'результат
 
End Function
Добавлено через 11 минут
Да, и ещё - " перебором словаря" в данном случае неправильно. Вообще словарь редко когда приходится перебирать...
1
 Аватар для KoGG
5641 / 1623 / 418
Регистрация: 23.12.2010
Сообщений: 2,433
Записей в блоге: 1
03.02.2016, 10:06
Краткая запись
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function NovoSearch(Name As String) As String
    Dim sLw As Integer, i As Integer, e As Integer
    Dim sName As String, x As String, y As String, result As String
    Dim Dic As Object, Uri, Cyr
    sLw = Len(Name) 'считаем количество символов
    Uri = Split("%E0|%E1|%E2|%E3|%E4|%E5|%E6|%E7|%E8|%E9|%EA|%EB|%EC|%ED|%EE|%EF|%F0|%F1|%F2|%F3|%F4|%F5|%F6|%F7|%F8|%F9|%FA|%FB|%FC|%FD|%FE|%FF|%C0|%C1|%C2|%C3|%C4|%C5|%C6|%C7|%C8|%C9|%CA|%CB|%CC|%CD|%CE|%CF|%D0|%D1|%D2|%D3|%D4|%D5|%D6|%D7|%D8|%D9|%DA|%DB|%DC|%DD|%DE|%DF|%A8|%B8|%2B|%25|%26|.|+", "|")
    Cyr = Split("а|||б|||в|||г|||д|||е|||ж|||з|||и|||й|||к|||л|||м|||н|||о|||п|||р|||с|||т|||у|||ф|||х|||ц|||ч|||ш|||щ|||ъ|||ы|||ь|||э|||ю|||я|||А|||Б|||В|||Г|||Д|||Е|||Ж|||З|||И|||Й|||К|||Л|||М|||Н|||О|||П|||Р|||С|||Т|||У|||Ф|||Х|||Ц|||Ч|||Ш|||Щ|||Ъ|||Ы|||Ь|||Э|||Ю|||Я|||Ё|||ё|||+|||%|||&|||.||| ", "|||")
    Set Dic = CreateObject("Scripting.Dictionary") 'формируем словарь
    With Dic
        For i = 0 To UBound(Cyr): .Add Cyr(i), Uri(i): Next
        For i = 1 To sLw 'перебираем слово
            y = Mid(Name, i, 1)
            If .Exists(y) Then
                x = .item(y)
            Else
                x = "#Error!NotExistInDictionary#"
            End If
            result = result + x 'формируем ответ
        Next i
    End With
    Set Dic = Nothing
    NovoSearch = result 'результат
End Function
1
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,937
Записей в блоге: 4
03.02.2016, 11:15
никогда не применяю такую запись --нервы и глаза дороже нескольких строк кода
----случайный сдвиг и тьма хлопот

Uri = Split("%E0|%E1|%E2|%E3|%E4|%E5|%E6|%E7|% E8|%E9|%EA|%EB|%EC|%ED|%EE|%EF|%F0|%F1|% F2|%F3|%F4|%F5|%F6|%F7|%F8|%F9|%FA|%FB|% FC|%FD|%FE|%FF|%C0|%C1|%C2|%C3|%C4|%C5|% C6|%C7|%C8|%C9|%CA|%CB|%CC|%CD|%CE|%CF|% D0|%D1|%D2|%D3|%D4|%D5|%D6|%D7|%D8|%D9|% DA|%DB|%DC|%DD|%DE|%DF|%A8|%B8|%2B|%25|% 26|.|+", "|")
Cyr = Split("а|||б|||в|||г|||д|||е|||ж|||з|||и |||й|||к|||л|||м|||н|||о|||п|||р|||с|||т |||у|||ф|||х|||ц|||ч|||ш|||щ|||ъ|||ы|||ь |||э|||ю|||я|||А|||Б|||В|||Г|||Д|||Е|||Ж |||З|||И|||Й|||К|||Л|||М|||Н|||О|||П|||Р |||С|||Т|||У|||Ф|||Х|||Ц|||Ч|||Ш|||Щ|||Ъ |||Ы|||Ь|||Э|||Ю|||Я|||Ё|||ё|||+|||%|||& |||.||| ", "|||")
0
 Аватар для mostApi
8 / 6 / 0
Регистрация: 15.05.2015
Сообщений: 350
03.02.2016, 16:02  [ТС]
Hugo121, shanemac51, ОоО накидали)..., спасибо, разобрался с вашей помощью...
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
03.02.2016, 16:45
А как же KoGG? Обычно меня забывают...
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
03.02.2016, 17:05
mostApi, а зачем тут вообще словарь? Коды же подряд идут. Без оптимизации
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function NovoSearch(Name As String) As String
Dim i&, c$, j&, e%, d$()
  d = Split("+ . %2B %25 %26 %B8 %A8")
  For i = 1 To Len(Name)
    c = Mid$(Name, i, 1)
    e = AscW(c)
    Select Case e
    Case 1040 To 1103 'А-я
      NovoSearch = NovoSearch & "%" & Hex(e - 848)
    Case Else
      j = InStr(1, " .+%&ёЁ", c)
      If j Then NovoSearch = NovoSearch & d(j - 1)
    End Select
  Next
End Function
1
 Аватар для mostApi
8 / 6 / 0
Регистрация: 15.05.2015
Сообщений: 350
04.02.2016, 21:08  [ТС]
KoGG, Казанский, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2016, 21:08
Помогаю со студенческими работами здесь

Uri и все об uri
Народ, можете объяснить для чего нужно uri Например что бы в CookieContainer добавить куку нужно uri Что и для чего объясните ...

Как в индексаторе моей реализации "словаря" получить элемент словаря без перебора?
Пытался сдать лабу преподавателю, суть которой в открытом хешировании, создал свой словарь (класс Dict (перебор через элемент head и tail))...

Цикл с перебором
Нужно, чтобы подставлялись значения из ячеек A1:A20 в ячейку B2 до тех пор, пока значение в другой ячейки не станет меньше значения во...

Поиск с перебором.
не могу решить до конца задачу......моя программа не работает...кто может помогите..: Дано натуральное число n<=2000000000...

Решение задачи перебором
Дана задача в общем виде: Имеются предметы ценой x, y, z. Найти все возможные наборы предметов такие, что суммы их цен была равна w. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru