03.07.2009, 16:34 | #1 |
Модератор
|
Транслитерация русских букв в английские
Кто нибудь писал метод транслитерации русских букв и английские?
Какой ГОСТ или стандарт выбрали транслитерации? Предполагается транслитерировать ФИО сотрудника. http://www.transliteration.ru/ http://ru.wikipedia.org/wiki/%D0%A2%...86%D0%B8%D1%8F ПРИКАЗ МВД РФ от 31.12.2003 N 1047 http://mvd.consultant.ru/doc.asp?ID=...=1&PT=3&Page=5 Последний раз редактировалось Poleax; 03.07.2009 в 16:37. Причина: ПРИКАЗ МВД РФ от 31.12.2003 N 1047 |
|
03.07.2009, 17:15 | #2 |
Модератор
|
получился код
X++: static void Job110(Args _args) { str rus = 'Василиса Васильев'; str eng = ''; str abc,old; int i; ; // if('ВАСЯ'=='вася') info('одинаково'); for(i=1; i <= strlen(rus); i++) { //ПРИКАЗ МВД РФ от 31.12.2003 N 1047 abc = SubStr(rus,i,1); switch (abc) { case 'а' : eng += 'a'; break; case 'А' : eng += 'A'; break; case 'б' : eng += 'b'; break; case 'Б' : eng += 'B'; break; case 'в' : eng += 'v'; break; case 'В' : eng += 'V'; break; case 'г' : eng += 'g'; break; case 'Г' : eng += 'G'; break; case 'д' : eng += 'd'; break; case 'Д' : eng += 'D'; break; case 'е' : if(old == 'ь') eng += 'y'; eng += 'e'; break; case 'Е' : if(old == 'ь') eng += 'Y'; eng += 'E'; break; case 'ё' : if(old == 'ь') eng += 'y'; eng += 'e'; break; case 'Ё' : if(old == 'ь') eng += 'Y'; eng += 'E'; break; case 'ж' : eng += 'zh'; break; case 'Ж' : eng += 'ZH'; break; case 'з' : eng += 'z'; break; case 'З' : eng += 'Z'; break; case 'и' : eng += 'i'; break; case 'И' : eng += 'I'; break; case 'й' : eng += 'y'; break; case 'Й' : eng += 'Y'; break; case 'к' : eng += 'k'; break; case 'К' : eng += 'K'; break; case 'л' : eng += 'l'; break; case 'Л' : eng += 'L'; break; case 'м' : eng += 'm'; break; case 'М' : eng += 'M'; break; case 'н' : eng += 'n'; break; case 'Н' : eng += 'N'; break; case 'о' : eng += 'o'; break; case 'О' : eng += 'O'; break; case 'п' : eng += 'p'; break; case 'П' : eng += 'P'; break; case 'р' : eng += 'r'; break; case 'Р' : eng += 'R'; break; case 'с' : eng += 's'; break; case 'С' : eng += 'S'; break; case 'т' : eng += 't'; break; case 'Т' : eng += 'T'; break; case 'у' : eng += 'u'; break; case 'У' : eng += 'U'; break; case 'ф' : eng += 'f'; break; case 'Ф' : eng += 'F'; break; case 'х' : eng += 'rh'; break; case 'Х' : eng += 'RH'; break; case 'ц' : eng += 'ts'; break; case 'Ц' : eng += 'TS'; break; case 'ч' : eng += 'ch'; break; case 'Ч' : eng += 'CH'; break; case 'ш' : eng += 'sh'; break; case 'Ш' : eng += 'SH'; break; case 'щ' : eng += 'shch'; break; case 'Щ' : eng += 'SHCH'; break; case 'ы' : eng += 'y'; break; case 'Ы' : eng += 'Y'; break; case 'э' : eng += 'e'; break; case 'Э' : eng += 'E'; break; case 'ю' : eng += 'yu'; break; case 'Ю' : eng += 'YU'; break; case 'я' : eng += 'ya'; break; case 'Я' : eng += 'YA'; break; } old = StrLWr(SubStr(rus,i,1)); } info(rus + ' ' + eng); } Последний раз редактировалось Poleax; 03.07.2009 в 17:23. |
|
03.07.2009, 17:59 | #3 |
Участник
|
char2num()
Цитата:
X++: static void jbCheckUppercase(Args _args) { str strTest = 'ёЁItisВасилийBasil' ; int idxChar ; boolean isUpperCase( str 1 _char ) { int charIdx = char2num( _char, 1 ) ; ; // english if( charIdx >= char2num( 'A', 1 ) && charIdx <= char2num( 'Z', 1 ) ) return true ; // russian if( charIdx == char2num( 'Ё', 1 ) || ( charIdx >= char2num( 'А', 1 ) && charIdx <= char2num( 'Я', 1 ) ) ) return true ; return false ; } boolean isLowerCase( str 1 _char ) { int charIdx = char2num( _char, 1 ) ; ; // english if( charIdx >= char2num( 'a', 1 ) && charIdx <= char2num( 'z', 1 ) ) return true ; // russian if( charIdx == char2num( 'ё', 1 ) || ( charIdx >= char2num( 'а', 1 ) && charIdx <= char2num( 'я', 1 ) ) ) return true ; return false ; } ; for( idxChar=1; idxChar <= strlen( strTest ); idxChar++ ) info( strfmt( "%1 - %2", substr( strTest, idxChar, 1 ), isUpperCase( substr( strTest, idxChar, 1 ) ) ) ) ; }
__________________
Dynamics AX 4.0 SP2 Последний раз редактировалось in.dc; 03.07.2009 в 18:05. |
|
|
За это сообщение автора поблагодарили: Poleax (1). |
|
|