Транслит

Тема в разделе "1C и всё что с ней связано", создана пользователем Hryv, 17 май 2010.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. Hryv

    Hryv Гость

    У меня есть строка содержащая 2 прописные буквы, которые одинаково выглядят в кирилице и латинице.
    И справочник с таким же реквизитом
    По этой строке надо найти элемент
    Получается, в общем случае, надо сделать 4 поиска: Для "ЛЛ", "ЛК", "КЛ" и "КК".
    Проблема в том, что исходная строка сама может быть в каждом из этих 4 вариантов и как-то не хочется писать "в лоб" алгоритм перевода ее в 3 других варианта.

    Короче говоря, хотелось бы иметь примерно такую функцию
    Транслит(Буква, КЛ) // КЛ = 1, вернет в кирилице, КЛ = 2, вернет в латинице

    Если есть у кого, поделитесь, плиз
     
  2. Pro

    Pro Гость

    самое простое и надежное тупой перевод посимвольно в один формат (стандарт).
     
  3. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    КодСимв() / симв() ? Только от перебора строчки посимвольно опять-же не обойтись.

    Хочешь извращенческий вариант? - по сути у тебя код символа - это цифра. Перебираешь строку по которой ищешь (просто быстрее чем всё в справочниках перебирать) и если суммы кодов двух стоящих рядом букв (кодСимв()) попадают в 16 вариантов меняешь эти символы (Симв()) на нужные тебе.
     
  4. Hryv

    Hryv Гость

    а почему 16 вариантов
    я насчитал 11 букв у которых начертания совпадают
    получается надо делать примерно так
    для буквы 'А'
    Код (Text):
    Код = КодСимв(Буква);
    Если (Код = 65) или (Код = 192) Тогда
    Возврат ?(КЛ=1, Симв(192), Симв(65));
    КонецЕсли;
    Впринципе для 11 букв не проблема так написать и будет у меня нужная функция

    А перебирать строку мне не надо, реквизит состоит только из 2 букв и его просто надо сравнить с 4 вариантами

    Добавлено:
    Можно и так
    образец и реквизит привести, например, к латинице, а потом сравнить
    так даже явно лучше, чем 4 раза сравнивать
     
  5. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    16 - это для двухбуквенных строчек во всех вариантах. Я то думал что тебе надо именно двухбуквенные варианты "переводить".
     
  6. Hryv

    Hryv Гость

    мне и надо двухбуквенные, но почему 16 вариантов я не догоняю
    если подходить с этой стороны, то как минимум 484 варианта существует
    но сумма кодов не будет уникальной
    например, AM (65+77) = CK (67+75)
     
  7. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    16 - количество комбинаций четырех символов в двухсимвольной строчке. Ну как в начальном примере.

    Жаль - а было-бы красиво. ;-)
     
  8. Hryv

    Hryv Гость

    тогда понятно, только символов не 4, а 22 :)

    но приемлимое решение уже найдено, осталось реализовать
     
Загрузка...
Похожие Темы - Транслит
  1. Rosna
    Ответов:
    18
    Просмотров:
    5.604
  2. sanch
    Ответов:
    3
    Просмотров:
    3.205
Статус темы:
Закрыта.

Поделиться этой страницей