Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизФункция перевода рус. сивола в лат.? Найти похожие ветки
← →
vigo_ (2006-05-30 15:22) [0]Подскажите где можно найти функцию перевода русских символов в латинскиу транслитерацию? Понадобилось для перевода фамилии и имени (в латиницу).
Думаю тема не нова, может у кого ссылка осталась?
Спасибо.
← →
tesseract © (2006-05-30 15:26) [1]создай таблицу крнвертации. Google пр неё знает.
← →
Desdechado © (2006-05-30 15:31) [2]элементарно - 2 массива с соответствующими буквами по одинаковым индексам
← →
Marser © (2006-05-30 15:40) [3]> [2] Desdechado © (30.05.06 15:31)
> элементарно - 2 массива с соответствующими буквами по одинаковым
> индексам
"Х"="H"
"Ш"= ?
В смысле, что одним символом явно не обойдёшься. Для Щ их вообще три нужно.
← →
Desdechado © (2006-05-30 15:44) [4]А что, массив обязан быть по CHAR ?
Я ж на писал "буквами". Словом как-то комбинацию "zh" не назовешь.
← →
Guest 111 (2006-05-30 15:47) [5]function TranslChar(c: char): string;
var
r: string;
begin
case c of
"а": r:="a";
"б": r:="b";
...
"Ю": r:="U";
"Я": r:="Ya";
else r:=c;
end;
result:=r;
end;
function Transliterate(aStr: string): string;
var
i: integer;
begin
for i:=1 to Length(aStr)
result:=result+TranslChar(aStr[i]);
end;
← →
Marser © (2006-05-30 15:49) [6]Кстати, и "х" открытое пишется как "kh"...
← →
vigo_ (2006-05-30 17:01) [7]Хоть и не красиво, но работает...
function CyrToLat(s: string): String;
var
str : string;
i, l : integer;
begin
s := AnsiLowerCase(s);
l := length(s); str := "";
for i := 1 to l do
case s[i] of
"а" : str := str + "a";
"б" : str := str + "b";
"в" : str := str + "v";
"г" : str := str + "g";
"д" : str := str + "d";
"е" : str := str + "e";
"ё" : str := str + "e";
"ж" : str := str + "zh";
"з" : str := str + "z";
"и" : str := str + "i";
"й" : str := str + "y";
"к" : str := str + "k";
"л" : str := str + "l";
"м" : str := str + "m";
"н" : str := str + "n";
"о" : str := str + "o";
"п" : str := str + "p";
"р" : str := str + "r";
"с" : str := str + "s";
"т" : str := str + "t";
"у" : str := str + "u";
"ф" : str := str + "f";
"х" : str := str + "kh";
"ц" : str := str + "ts";
"ч" : str := str + "ch";
"ш" : str := str + "sh";
"щ" : str := str + "shch";
"ъ" : str := str + "";
"ы" : str := str + "y";
"ь" : str := str + "";
"э" : str := str + "e";
"ю" : str := str + "yu";
"я" : str := str + "ya";
" " : str := str + " ";
end;
Result := UpperCase(str);
end;
← →
oldman © (2006-05-30 17:05) [8]
> Guest 111 (30.05.06 15:47) [5]
> vigo_ (30.05.06 17:01) [7]
В моей фамилии концовка "деев"...
Прямой перевод ни подойдет... Получится длинное "и"...
:)))
← →
vigo_ (2006-05-30 17:20) [9]Спасибо, тогда, видимо, так:
Result := UpperCase(StringReplace(str, "ee", "eye", [rfReplaceAll]));
Интересно, какие еще могут быть варианты?
← →
oldman © (2006-05-30 17:24) [10]
> vigo_ (30.05.06 17:20) [9]
> Интересно, какие еще могут быть варианты?
"деев":="de`ev" :)
A "deyev", имхо, = "дейев"
← →
vigo_ (2006-05-30 17:43) [11]Судя по ссылке, все-таки "deev", имхо:
http://ezpc.dax.ru/itliter.shtml
← →
vigo_ (2006-05-30 18:31) [12]Вроде окончательный вариант, если кому интересно:
function CyrToLat(s: string): String;
var
str : string;
i, l : integer;
begin
s := AnsiLowerCase(s);
l := length(s); str := "";
for i := 1 to l do
case s[i] of
"а" : str := str + "a";
"б" : str := str + "b";
"в" : str := str + "v";
"г" : str := str + "g";
"д" : str := str + "d";
"е" : if ((i = 1)
or (copy(str, length(str), 1) = " ")
or (copy(str, length(str), 1) = "-")
or (copy(str, length(str), 1) = "e")
or (copy(str, length(str), 1) = "o"))
then str := str + "ye"
else str := str + "e";
"ё" : str := str + "e";
"ж" : str := str + "zh";
"з" : str := str + "z";
"и" : str := str + "i";
"й" : begin
if copy(str, length(str), 1) = "i" then delete(str, length(str), 1);
str := str + "y"
end;
"к" : str := str + "k";
"л" : str := str + "l";
"м" : str := str + "m";
"н" : str := str + "n";
"о" : str := str + "o";
"п" : str := str + "p";
"р" : str := str + "r";
"с" : str := str + "s";
"т" : str := str + "t";
"у" : str := str + "u";
"ф" : str := str + "f";
"х" : str := str + "kh";
"ц" : str := str + "ts";
"ч" : str := str + "ch";
"ш" : str := str + "sh";
"щ" : str := str + "shch";
"ъ" : str := str + "-";
"ы" : str := str + "y";
"ь" : str := str + "-";
"э" : str := str + "e";
"ю" : str := str + "yu";
"я" : str := str + "ya";
" " : str := str + " ";
end;
Result := UpperCase(StringReplace(str, "-", "", [rfReplaceAll]));
end;
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c