|
21.04.2016, 15:15 | #1 |
Участник
|
Транслит с учетом регистра
Добрый день.
Немного доработал метод, который преобразует строку в транслит с учетом регистра. Может кому-нибудь пригодится. 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). |