AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны Забыли пароль?

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2008, 11:01   #1  
Antoncheg is offline
Antoncheg
Участник
 
41 / 11 (1) +
Регистрация: 29.02.2008
! Транслит
Доброго всем времени суток, Уважаемые знатоки, не подскажете, есть ли в аксапте класс, переводящий русские символы в английские?
Старый 28.05.2008, 11:14   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
Сотрудники компании НЭТИ
 
1,437 / 145 (7) +++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Думаю что нет Но написать самому такой класс плевое дело...
Старый 28.05.2008, 11:16   #3  
Antoncheg is offline
Antoncheg
Участник
 
41 / 11 (1) +
Регистрация: 29.02.2008
Цитата:
Сообщение от Sada Посмотреть сообщение
Думаю что нет Но написать самому такой класс плевое дело...
для новичка особенно)))
Старый 28.05.2008, 11:19   #4  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
писать действительно 10 минут от силы...
Старый 28.05.2008, 11:22   #5  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
266 / 114 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
ГОСТ-у 7.79-2000 и switch case вам в помощь
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 28.05.2008, 11:23   #6  
Sada is offline
Sada
Программатор
Аватар для Sada
Сотрудники компании НЭТИ
 
1,437 / 145 (7) +++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Цитата:
Сообщение от Antoncheg Посмотреть сообщение
для новичка особенно)))
Особенно такие задания полезны для новичка
Старый 28.05.2008, 11:24   #7  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
645 / 125 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от sparur Посмотреть сообщение
писать действительно 10 минут от силы...
Погорячился, IMHO. Это с какой же скоростью по клаве щелкать надо?
__________________
Best Regards,
Roman
Старый 28.05.2008, 11:28   #8  
Sada is offline
Sada
Программатор
Аватар для Sada
Сотрудники компании НЭТИ
 
1,437 / 145 (7) +++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
23 секунды на копи паста аглицких букав, + 9 минут 37 секунд на оформление и подстановку правильных руских букв .
Старый 28.05.2008, 11:28   #9  
Antoncheg is offline
Antoncheg
Участник
 
41 / 11 (1) +
Регистрация: 29.02.2008
Цитата:
Сообщение от Russland Посмотреть сообщение
ГОСТ-у 7.79-2000 и switch case вам в помощь
благодарю, про этот ГОСТ не знал
Старый 28.05.2008, 11:28   #10  
Lucky13 is offline
Lucky13
Участник
 
674 / 146 (6) +++++
Регистрация: 21.10.2004
Адрес: Воронеж
X++:
static str translit(str value, boolean letteronly = false)
{
    container rus = ['а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'];
    container lat = ['a','b','v','g','d','e','jo','zh','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sch','','y','','e','ju','ja'];
    int i, n;
    str letter;
    str ret;
    ;
    for (i = 1;i<=strlen(value);i++)
    {
        letter = strlwr(substr(value,i,1));
        n =  confind(rus,letter);
        ret += n>0 ? conpeek(lat,n) : letter;
    }

    return letteronly ? strkeep(ret,'abcdefghijklmnopqrstuvwxyz0123456789') : ret;
}
За это сообщение автора поблагодарили: EVGL (3), DreamCreator (3), G.Menshikh (1), Antoncheg (1).
Старый 28.05.2008, 11:29   #11  
Sada is offline
Sada
Программатор
Аватар для Sada
Сотрудники компании НЭТИ
 
1,437 / 145 (7) +++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
ВООО
Старый 28.05.2008, 11:38   #12  
Antoncheg is offline
Antoncheg
Участник
 
41 / 11 (1) +
Регистрация: 29.02.2008
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
X++:
static str translit(str value, boolean letteronly = false)
{
    container rus = ['а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'];
    container lat = ['a','b','v','g','d','e','jo','zh','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sch','','y','','e','ju','ja'];
    int i, n;
    str letter;
    str ret;
    ;
    for (i = 1;i<=strlen(value);i++)
    {
        letter = strlwr(substr(value,i,1));
        n =  confind(rus,letter);
        ret += n>0 ? conpeek(lat,n) : letter;
    }
 
    return letteronly ? strkeep(ret,'abcdefghijklmnopqrstuvwxyz0123456789') : ret;
}
Огромное спасибо! Тема закрыта
Старый 11.04.2016, 16:40   #13  
Art_Tanis is offline
Art_Tanis
Участник
 
223 / 35 (2) +++
Регистрация: 04.02.2014
А как с регистром же быть? Регистр то не ловится чето совсем?
Старый 11.04.2016, 19:18   #14  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,729 / 1830 (69) ++++++++
Регистрация: 16.01.2004
Адрес: Москва
Так как все сравнения по умолчанию регистронезависимые можно не делать strLwr:

X++:
letter = strlwr(substr(value,i,1));
Чтобы сделать регистр, как мне кажется, достаточно добавить в конец что-то типа

X++:
str makeTheSameCase(str _letterToCompare, str _letterToConvert)
{
    return (strCmp(_letterToCompare, strUpr(_letterToCompare))==0)
       ? str2Capital( letterToConvert) : letterToConvert
}
...
ret += n>0 ? makeTheSameCase(letter, conpeek(lat,n)) : letter;

Последний раз редактировалось belugin; 11.04.2016 в 20:42. Причина: str2capital
За это сообщение автора поблагодарили: Владимир Максимов (2), S.Kuskov (2).
Старый 11.04.2016, 20:29   #15  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2014
 
3,064 / 1495 (56) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Если в замене больше одного символа, то к верхнему регистру наверное нужно приводить только первый символ а не все.
За это сообщение автора поблагодарили: belugin (3).
Старый 21.04.2016, 15:15   #17  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
254 / 103 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Транслит с учетом регистра
Добрый день.

Немного доработал метод, который преобразует строку в транслит с учетом регистра. Может кому-нибудь пригодится.

X++:
public static str translit(
    str     _value,
    boolean _letteronly = false)
{
    container       rus, lat,
                    rusLower = ['а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'],
                    latLower = ['a','b','v','g','d','e','yo','zh','z','i','y','k','l','m','n','o','p','r','s','t','u','f','h','ts','ch','sh','shch','','y','','e','yu','ya'],
                    rusUpper = ['А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я'],
                    latUpper = ['A','B','V','G','D','E','YO','ZH','Z','I','Y','K','L','M','N','O','P','R','S','T','U','F','H','TS','CH','SH','SHCH','','Y','','E','YU','YA'];

    int             i, n;
    str             letter, ret;
    boolean         isLower;
    System.Boolean  isLowerNet;
    System.String   letterNet;
    System.Char     charNet;
    ;

    for (i=1; i<=strlen(_value); i++)
    {
        letter     = substr(_value, i, 1);
        letterNet  = letter;
        charNet    = letterNet.get_Chars(0);
        isLowerNet = System.Char::IsLower(charNet);
        isLower    = isLowerNet;

        if (isLower)
        {
            rus = rusLower;
            lat = latLower;
        }
        else
        {
            rus = rusUpper;
            lat = latUpper;
        }

        n = confind(rus, letter);
        ret += n > 0 ? conpeek(lat, n) : letter;
    }

    return _letteronly ? strkeep(ret,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') : ret;
}
__________________
С уважением, Александр.
За это сообщение автора поблагодарили: Logger (5), Weez (1).
Теги
translit, законченный пример, полезное, транслит

 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:55.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.