|
Тема
|
Конвертор кирилица <=> латиница
|
|
Автор | nmm (Нерегистриран) |
Публикувано | 20.12.08 20:29 |
|
Колеги, някой правил ли е процедура която да конвертира кирилица в латиница и обратно? Не мисля че е сложно, но не ми се преоткрива колелото, а преполагам някои го е направил вече и то кадърно, и ако иска да го сподели за да го ползваме всички.
Предварително благодаря!
| |
Тема
|
Re: Конвертор кирилица <=> латиница
[re: nmm]
|
|
Автор |
Pechenia (нема лабаво ;-) |
Публикувано | 21.12.08 18:57 |
|
Неприятния факт е че кирилици и латиници има доста. Ако конкретизираш от коя в коя и съответно потърсиш с чичо Гугъл, ще изникнат доста готови и изпробвани решения. Ако пък не си наясно какво търсиш, започни от http://free.hit.bg/injinera/na4alo.htm
чети и дишай по-леко
| |
Тема
|
Re: Конвертор кирилица <=> латиница
[re: Pechenia]
|
|
Автор | nmm (Нерегистриран) |
Публикувано | 24.12.08 16:23 |
|
Става въпрос за просто конвертиране на стринг написан на латиница във фонетичния му еквивалент и обратно.
Тея дни вероятно ще си го направа, че то докато го търся...
| |
Тема
|
Re: Конвертор кирилица <=> латиница
[re: nmm]
|
|
Автор |
Heykия (ентусиаст) |
Публикувано | 25.12.08 18:54 |
|
нещо от сорта на следното треа ти свърши работа:
Function Convert(Var String1:String):String;
Const
Lat='AaBbCcDdEeFf';
Cyr='АаБбЦцДдЕеФф';
ch:char;P,i:Integer;S:String;
begin
s:='';
for i:=1 to Length(String1) do
begin
ch:=string1;
P:=Pos(ch,lat);
if P>0 then ch:=Cyr[P];
s:=s+ch;
end;
result:=s;
end;
Lat и Cyr стринговете ги допълваш така, че съответните букви да са на едно и също място в единия и другия стринг... Разбира се, че кода може да се оптимизира по различни варианти, но общо взето идеята е тази.
Може да съм допуснал нейде неква синтактична грешка. Некоя точйа, запетайка и т.н.
| |
Тема
|
Re: Конвертор кирилица <=> латиница
[re: Heykия]
|
|
Автор | nmm (Нерегистриран) |
Публикувано | 26.12.08 02:29 |
|
Колега, благодаря много.
Доразвих малко идеята ти и ето я тук за всички:
function Convert(String1:String; isBDS:boolean):String;
Const
Lat='~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?`1234567890-=qwertyuiop[]\asdfghjkl;''zxcvbnm,./';
Pho='×!@#$%^&*()_+ßÂÅÐÒÚÓÈÎÏØÙÞÀÑÄÔÃÕÉÊË:"ÇÜÖÆÁÍÌ<>?÷1234567890-=ÿâåðòúóèîïøùþàñäôãõéêë;''çüöæáíì,./';
BDS=')!?+"%=:/–¹$ˆûÓÅÈØÙÊÑÄÇÖ§“?ßÀÎÆÃÒÍÂÌ×ÞÉÚÝÔÕÏÐËÁ(1234567890-.,óåèøùêñäçö;„üÿàîæãòíâì÷þéúýôõïðëá';
var
ch:char;P,i:Integer;
s, Cyr:String;
latToCyr:boolean;
begin
if isBDS then
cyr:=bds
else
cyr:=pho ;
s:='';
ch:= String1[1];
P:=Pos(ch,lat);
latToCyr:= P>0;
for i:=1 to Length(String1) do
begin
ch:= String1;
if lattocyr then
begin
P:=Pos(ch,lat);
if P>0 then
ch:=Cyr[P];
s:=s+ch;
end
else
begin
P:=Pos(ch,cyr);
if P>0 then
ch:=lat[P];
s:=s+ch;
end;
end;
result:=s;
end;
IsBDS е ако искате да обърнете от/към БДС подредбата. Ако първия char е кирилица - целия стринг се обръща към латиница и обратно.
| |
Тема
|
Re: Конвертор кирилица <=> латиница
[re: Heykия]
|
|
Автор | nmm (Нерегистриран) |
Публикувано | 26.12.08 02:46 |
|
В предния пост нещо се прецака кирилицата. Ако ползвате функциата, проверете дали са се копирали правилно констатите (за всеки случай).
Ето кода отново:
function Convert(String1:String; isBDS:boolean):String;
Const
Lat='~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?`1234567890-=qwertyuiop[]\asdfghjkl;''zxcvbnm,./';
Pho='Ч!@#$%^&*()_+ЯВЕРТЪУИОПШЩЮАСДФГХЙКЛ:"ЗЬЦЖБНМ<>?ч1234567890-=явертъуиопшщюасдфгхйкл;''зьцжбнм,./';
BDS=')!?+"%=:/–№$€ыУЕИШЩКСДЗЦ§“?ЯАОЖГТНВМЧЮЙЪЭФХПРЛБ(1234567890-.,уеишщксдзц;„ьяаожгтнвмчюйъэфхпрлб';
var
ch:char;P,i:Integer;
s, Cyr:String;
latToCyr:boolean;
begin
if isBDS then
cyr:=bds
else
cyr:=pho ;
s:='';
ch:= String1[1];
P:=Pos(ch,lat);
latToCyr:= P>0;
for i:=1 to Length(String1) do
begin
ch:= String1;
if lattocyr then
begin
P:=Pos(ch,lat);
if P>0 then
ch:=Cyr[P];
s:=s+ch;
end
else
begin
P:=Pos(ch,cyr);
if P>0 then
ch:=lat[P];
s:=s+ch;
end;
end;
result:=s;
end;
| |
Тема
|
Re: Конвертор кирилица <=> латиница
[re: nmm]
|
|
Автор |
Mixy (@#$%^) |
Публикувано | 26.12.08 12:02 |
|
Когато постваш код, сложи [ pre ] таг преди това, за да ти се запази форматирането, иначе става мазало.
Весели празници!
Mixy
| |
|
|
|
|