Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.062 c
2-1149476015
kolbasa
2006-06-05 06:53
2006.06.25
Выборка из таблицы


2-1149583935
Piero
2006-06-06 12:52
2006.06.25
Как отобразить html страницу


10-1119950348
VladR
2005-06-28 13:19
2006.06.25
IHTMLDocument2 извлечение ссылок с кирилличными символами


3-1146031721
{Set}
2006-04-26 10:08
2006.06.25
Ошибка при подключении Таблици InterBase


15-1148898228
vidiv
2006-05-29 14:23
2006.06.25
"http://www.microsoft.com/rus/getthefacts/topics/ipi.mspx"...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский