Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите написать функцию с REPLACE / 3 сообщений из 3, страница 1 из 1
08.08.2014, 11:33
    #38715729
Помогите написать функцию с REPLACE
База товаров сделана в MS ACCESS. Стоит задача из названия товара сделать человекопонятный адрес для сайта.

например название "Name" в таблице товаров "Tovary"

Новый телевизор Тошиба 2,5VCCR 73" арт:3215

должно превратиться в адрес "URL"

www.novy-televizor-toshiba-2_5vccr-73-art-3215.html

По идее это можно было бы сделать с помощью REPLACE и таблицы замен с полями What и Replacement из которой бы цикл брал значения и заменял бы знаки но уже в новом поле...

Только мои познания VBA не позволяют с нуля написать эту функцию, поэтому прошу помощи.

ЗЫ: В дальнейшем эта функция может использоваться и для "причесывания" корявых названий, дальше перезаточит, думаю, смогу.

ЗЫ: а может есть где готовый пример, только я в поиске не нашел.
...
Рейтинг: 0 / 0
08.08.2014, 12:44
    #38715860
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать функцию с REPLACE
Дмитрий Ерошко,

Транслитерация
...
Рейтинг: 0 / 0
08.08.2014, 15:53
    #38716154
Помогите написать функцию с REPLACE
в общем работает эта конструкция

Код: vbnet
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.
Public Function Transliteration(sWord, sLangCode)
Dim n, s, z
  Transliteration = Trim(sWord & "")
  If Transliteration = "" Then Exit Function
  
Dim aRL(62, 1) ' кириллица - латиница
  aRL(0, 0) = "а": aRL(0, 1) = "a"
  aRL(1, 0) = "б": aRL(1, 1) = "b"
  aRL(2, 0) = "в": aRL(2, 1) = "v"
  aRL(3, 0) = "г": aRL(3, 1) = "g"
  aRL(4, 0) = "д": aRL(4, 1) = "d"
  aRL(5, 0) = "е": aRL(5, 1) = "e"
  aRL(6, 0) = "ё": aRL(6, 1) = "jo"
  aRL(7, 0) = "ж": aRL(7, 1) = "zh"
  aRL(8, 0) = "з": aRL(8, 1) = "z"
  aRL(9, 0) = "и": aRL(9, 1) = "i"
  aRL(10, 0) = "й": aRL(10, 1) = "j"
  aRL(11, 0) = "к": aRL(11, 1) = "k"
  aRL(12, 0) = "л": aRL(12, 1) = "l"
  aRL(13, 0) = "м": aRL(13, 1) = "m"
  aRL(14, 0) = "н": aRL(14, 1) = "n"
  aRL(15, 0) = "о": aRL(15, 1) = "o"
  aRL(16, 0) = "п": aRL(16, 1) = "p"
  aRL(17, 0) = "р": aRL(17, 1) = "r"
  aRL(18, 0) = "с": aRL(18, 1) = "s"
  aRL(19, 0) = "т": aRL(19, 1) = "t"
  aRL(20, 0) = "у": aRL(20, 1) = "u"
  aRL(21, 0) = "ф": aRL(21, 1) = "f"
  aRL(22, 0) = "х": aRL(22, 1) = "kh"
  aRL(23, 0) = "ц": aRL(23, 1) = "c"
  aRL(24, 0) = "ч": aRL(24, 1) = "ch"
  aRL(25, 0) = "ш": aRL(25, 1) = "sh"
  aRL(26, 0) = "щ": aRL(26, 1) = "csh"
  aRL(27, 0) = "ъ": aRL(27, 1) = "'"
  aRL(28, 0) = "ы": aRL(28, 1) = "y"
  aRL(29, 0) = "ь": aRL(29, 1) = "'"
  aRL(30, 0) = "э": aRL(30, 1) = "eh"
  aRL(31, 0) = "ю": aRL(31, 1) = "ju"
  aRL(32, 0) = "я": aRL(32, 1) = "ja"
  aRL(33, 0) = ".": aRL(33, 1) = ""
  aRL(34, 0) = ",": aRL(34, 1) = "-"
  aRL(35, 0) = " ": aRL(35, 1) = "-"
  aRL(36, 0) = "/": aRL(36, 1) = "-"
  aRL(37, 0) = "є": aRL(37, 1) = "e"
  aRL(38, 0) = "ї": aRL(38, 1) = "i"
  aRL(39, 0) = "'": aRL(39, 1) = ""
  aRL(40, 0) = "--": aRL(40, 1) = "-"
  aRL(41, 0) = "(": aRL(41, 1) = ""
  aRL(42, 0) = ")": aRL(42, 1) = ""
  aRL(43, 0) = ">": aRL(43, 1) = ""
  aRL(44, 0) = "<": aRL(44, 1) = ""
  aRL(45, 0) = "|": aRL(45, 1) = ""
  aRL(46, 0) = "\": aRL(46, 1) = ""
  aRL(47, 0) = "+": aRL(47, 1) = ""
  aRL(48, 0) = "=": aRL(48, 1) = ""
  aRL(49, 0) = "*": aRL(49, 1) = ""
  aRL(50, 0) = "[": aRL(50, 1) = ""
  aRL(51, 0) = "]": aRL(51, 1) = ""
  aRL(52, 0) = "{": aRL(52, 1) = ""
  aRL(53, 0) = "}": aRL(53, 1) = ""
  aRL(54, 0) = ";": aRL(54, 1) = ""
  aRL(55, 0) = ":": aRL(55, 1) = ""
  aRL(56, 0) = "%": aRL(56, 1) = ""
  aRL(57, 0) = "!": aRL(57, 1) = ""
  aRL(58, 0) = "&": aRL(58, 1) = ""
  aRL(59, 0) = "?": aRL(59, 1) = ""
  aRL(60, 0) = "#": aRL(60, 1) = ""
  aRL(61, 0) = "@": aRL(61, 1) = ""
  aRL(62, 0) = "--": aRL(62, 1) = "-"


  For n = 0 To 62
    s = aRL(n, 0)
    z = aRL(n, 1)
    Transliteration = Replace(Transliteration, s, z) ' строчные буквы
    Transliteration = StrConv(Transliteration, vbLowerCase) ' все в нижний регистр
    
  Next
End Function



Но с таблицей замен было бы лучше...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите написать функцию с REPLACE / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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