Участник
Регистрация: 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;
}
__________________
С уважением, Александр.
|