Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
st3F0s
Δημοσιεύσεις: 17
Εγγραφή: 08 Νοέμ 2005 16:37

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από st3F0s » 08 Νοέμ 2005 17:05

Φίλοι μου επιθυμώ να εφαρμόσω τους παρακάνω κανόνες σε web φόρμα συμπλήρωσης στοιχείων ταυτότητας, στο onchange ή lostfocus event κατά την είσοδο /έξοδο από το textfield.

Επειδή με την javascript έχω ασχοληθεί ελάχιστα θα σας παρακαλούσα να με βοηθήσετε στην συγγραφή του κώδικα που απαιτείται.

Σας ευχαριστώ εκ των προτέρων για τον χρόνο και τον κόπο σας


Aντιστοιχία γραμμάτων Ελληνικής και Λατινικής γραφής

Ελλ - Λατ Ελλ - Λατ Ελλ - Λατ
====== ====== ======

Α --> Α , K --> K , Τ --> Τ
Β --> V, Λ --> L , Υ --> Y
Γ --> G, Μ --> M , Φ --> F
Δ --> D, Ν --> N , Χ --> CH
Ε --> E, Ξ --> X , Ψ --> PS
Ζ --> Z, Ο --> O , Ω --> O
Η --> I, Π --> P,
Θ --> TH , Ρ --> R,
Ι --> I , Σ --> S,

Δίφθογγοι
------------
Ελλ - Λατ
=======

AI --> AI
AY --> AV (*), AF (**)
OI --> OI
OY --> OU
EI --> EI
EY --> EV (*), EF (**)


Διπλά
-------
Ελλ - Λατ
=======

ΜΠ --> B (στην αρχή ή στο τέλος)
ΜΠ --> MP (ενδιάμεσα)
ΝΤ --> NT
ΤΣ --> TS
ΤZ --> TZ
ΓΓ --> NG
ΓΚ --> GK
ΗΥ --> IY (*), IF (**)

(*) πριν από Β, Γ, Δ, Ζ, Λ, Μ, Ν, Ρ και τα φωνήεντα
(**) πριν από Θ, Κ, Ξ, Π, Σ, Τ, Φ, Χ, Ψ και στο τέλος λέξης.

st3F0s
Δημοσιεύσεις: 17
Εγγραφή: 08 Νοέμ 2005 16:37

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από st3F0s » 20 Νοέμ 2005 12:05

Μετά από αρκετή μελέτη των regular expression για javascript, προέκυψε η παρακάτω function, η οποία κάνει την μετατροπή των Ελληνικών χαρακτήρων σε Λατινικούς, σύμφωνα με ΕΛΟΤ 743.

Κάθε πρόταση για βελτίωση της function, είναι καλοδεχούμενη.

Η function καλείται στο συμβάν onchange / onBlur ως εξής:

Κώδικας: Επιλογή όλων

onBlur="translate('formname', 'fieldname1', 'filedname2');"

Κώδικας: Επιλογή όλων

function convertchar(inp_char)
{
if (inp_char=="α") {return "A"}
else if (inp_char=="\n") {return "\n"}
else if (inp_char=="ά") {return "A"}
else if (inp_char=="Α") {return "A"}
else if (inp_char=="Ά") {return "A"}
else if (inp_char=="β") {return "V"}
else if (inp_char=="Β") {return "V"}
else if (inp_char=="γ") {return "G"}
else if (inp_char=="Γ") {return "G"}
else if (inp_char=="δ") {return "D"}
else if (inp_char=="Δ") {return "D"}
else if (inp_char=="ε") {return "E"}
else if (inp_char=="έ") {return "E"}
else if (inp_char=="Ε") {return "E"}
else if (inp_char=="Έ") {return "E"}
else if (inp_char=="ζ") {return "Z"}
else if (inp_char=="Ζ") {return "Z"}
else if (inp_char=="η") {return "I"}
else if (inp_char=="ή") {return "I"}
else if (inp_char=="Η") {return "I"}
else if (inp_char=="Ή") {return "I"}
else if (inp_char=="θ") {return "TH"}
else if (inp_char=="Θ") {return "TH"}
else if (inp_char=="ι") {return "I"}
else if (inp_char=="ί") {return "I"}
else if (inp_char=="ϊ") {return "I"}
else if (inp_char=="ΐ") {return "I"}
else if (inp_char=="Ι") {return "I"}
else if (inp_char=="Ί") {return "I"}
else if (inp_char=="Ϊ") {return "I"}
else if (inp_char=="κ") {return "K"}
else if (inp_char=="Κ") {return "K"}
else if (inp_char=="λ") {return "L"}
else if (inp_char=="Λ") {return "L"}
else if (inp_char=="μ") {return "M"}
else if (inp_char=="Μ") {return "M"}
else if (inp_char=="ν") {return "N"}
else if (inp_char=="Ν") {return "N"}
else if (inp_char=="ξ") {return "X"}
else if (inp_char=="Ξ") {return "X"}
else if (inp_char=="ο") {return "O"}
else if (inp_char=="ό") {return "O"}
else if (inp_char=="Ο") {return "O"}
else if (inp_char=="Ό") {return "O"}
else if (inp_char=="π") {return "P"}
else if (inp_char=="Π") {return "P"}
else if (inp_char=="ρ") {return "R"}
else if (inp_char=="Ρ") {return "R"}
else if (inp_char=="σ") {return "S"}
else if (inp_char=="ς") {return "S"}
else if (inp_char=="Σ") {return "S"}
else if (inp_char=="τ") {return "T"}
else if (inp_char=="Τ") {return "T"}
else if (inp_char=="υ") {return "Y"}
else if (inp_char=="ύ") {return "Y"}
else if (inp_char=="ϋ") {return "Y"}
else if (inp_char=="ΰ") {return "Y"}
else if (inp_char=="Υ") {return "Y"}
else if (inp_char=="Ύ") {return "Y"}
else if (inp_char=="Ϋ") {return "Y"}
else if (inp_char=="φ") {return "F"}
else if (inp_char=="Φ") {return "F"}
else if (inp_char=="χ") {return "CH"}
else if (inp_char=="Χ") {return "CH"}
else if (inp_char=="ψ") {return "PS"}
else if (inp_char=="Ψ") {return "PS"}
else if (inp_char=="ω") {return "O"}
else if (inp_char=="ώ") {return "O"}
else if (inp_char=="Ω") {return "O"}
else if (inp_char=="Ώ") {return "O"}
else if (inp_char=="\n") {return ""}
else return inp_char
}

function translate(formname, field1, field2)
	    {
		document.forms[formname].elements[field2].value=''; 

		for &#40;i=0;i<document.forms&#91;formname&#93;.elements&#91;field1&#93;.value.length;i++&#41;
		    &#40;
				document.forms&#91;formname&#93;.elements&#91;field2&#93;.value += convertchar&#40;document.forms&#91;formname&#93;.elements&#91;field1&#93;.value.charAt&#40;i&#41;&#41;
		    &#41;
		oldtext=document.forms&#91;formname&#93;.elements&#91;field1&#93;.value;

var objRegExp = /&#40;AI&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "AI"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;OI&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "OI"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EI&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "EI"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;OY&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "OU"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;$/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "AF"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName; 

var objRegExp = /&#40;EY&#41;$/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "EF"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YT&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "FT"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YK&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "FK"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YX&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "FX"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YP&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "FP"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YS&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "FS"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YF&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "FF"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YC&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "FC"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YV&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VV"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YG&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VG"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YD&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VD"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YZ&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VZ"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YL&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VL"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YM&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VM"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YN&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VN"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YR&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VR"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YA&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VA"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName; 

var objRegExp = /&#40;AY&#41;?&#40;YE&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VE"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YI&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VI"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YO&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VO"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;AY&#41;?&#40;YY&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VY"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /^&#40;IY&#41;?&#40;YV&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IY"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YV&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VV"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName; 

var objRegExp = /&#40;EY&#41;?&#40;YG&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VG"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YD&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VD"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YZ&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VZ"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName; //ok

var objRegExp = /&#40;EY&#41;?&#40;YL&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VL"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YM&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VM"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName; 

var objRegExp = /&#40;EY&#41;?&#40;YN&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VN"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YR&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VR"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName; 

var objRegExp = /&#40;EY&#41;?&#40;YA&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VA"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YE&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VE"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YI&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VI"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YO&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VO"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;EY&#41;?&#40;YY&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "VY"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /\b&#40;MP&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "B"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;MP&#41;\b/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "B"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;NT&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "NT"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;TS&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "TS"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;TZ&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "TZ"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;GG&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "NG"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;GK&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "GK"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IY&#41;$/g; //
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IF"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVV&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYV"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVG&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYG"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVD&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYD"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVZ&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYZ"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVL&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYL"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVM&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYM"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVN&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYN"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVR&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYR"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVA&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYA"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVE&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYE"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVI&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYI"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVO&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYO"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

var objRegExp = /&#40;IVY&#41;/g;
var strField2 = document.forms&#91;formname&#93;.elements&#91;field2&#93;.value;
var strReverseName = strField2.replace&#40;objRegExp, "IYY"&#41;;
document.forms&#91;formname&#93;.elements&#91;field2&#93;.value = strReverseName;

&#125;


st3F0s
Δημοσιεύσεις: 17
Εγγραφή: 08 Νοέμ 2005 16:37

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από st3F0s » 20 Νοέμ 2005 19:28

Είναι στο πρώτο if :D

Κώδικας: Επιλογή όλων

function convertchar&#40;inp_char&#41;
&#123;
if &#40;inp_char=="α"&#41; &#123;return "A"&#125; 
Σίγουρα υπάρχει τρόπος να μπούνε όλοι οι χαρακτήρες σ' ενα πίνακα, όπως επίσης και οι αντίστοιχοι έλεγχοι στα regular expressions και αυτό είναι το ζητούμενο.


Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27620
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από cordis » 21 Νοέμ 2005 11:35

Πολύ ωραίος.. ;)
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
alkisg
Δημοσιεύσεις: 265
Εγγραφή: 03 Ιουν 2005 11:53
Τοποθεσία: Ιωάννινα
Επικοινωνία:

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από alkisg » 21 Νοέμ 2005 12:09

Παπαπα!

Βάλε βρε έναν πίνακα να βρεις την υγειά σου! Τόσες if και πολλά kb πιάνουν και αργούν στην εκτέλεση!

Δλδ (δεν το γράφω σε javascript για να είναι πιο κατανοητό):
EnglishToGreeklishCaps: array['A'..'Z'] of string = {"A", "B", "C", ... "PS", "W"}
δηλαδή ένας πίνακας με τα αντίστοιχα greeklish,
και άλλος ένας για τα μικρά.

Μετά λες σκέτο
if (char >= "A" && char <= "Z")
result = EnglishToGreeklishCaps[char]
και τελείωσες! Δηλαδή πίνακας αντί για πολλές if.

edit: Βέβαια τα if για τους δίφθογγους που είναι άλλοτε έτσι κι άλλοτε αλλιώς δεν τα γλυτώνεις, πρέπει να τα ελέγχεις πριν από το if που έγραψα...

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 23 Νοέμ 2005 09:47

Μία πιο συμπαγής εκδοχή:

Κώδικας: Επιλογή όλων

function translate&#40;text&#41; &#123;
  expressions = &#123;
    'αι'                    &#58; 'ai',
    'αυ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'af$1',
    'αυ'                    &#58; 'av',
    'οι'                    &#58; 'oi',
    'ου'                    &#58; 'ou',
    'ει'                    &#58; 'ei',
    'ευ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'ef$1',
    'ευ'                    &#58; 'ev',
    
    '&#40;^|\\s&#41;μπ'             &#58; '$1b',
    'μπ&#40;\\s|$&#41;'             &#58; 'b$1',
    'μπ'                    &#58; 'mp',
    'ντ'                    &#58; 'nt',
    'τσ'                    &#58; 'ts',
    'τζ'                    &#58; 'tz',
    'γγ'                    &#58; 'ng',
    'γκ'                    &#58; 'gk',
    'ηυ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'if$1',
    'ηυ'                    &#58; 'iy',
    
    'θ'                     &#58; 'th',
    'χ'                     &#58; 'ch',
    'ψ'                     &#58; 'ps'
  &#125;
  text = text.toLowerCase&#40;&#41;
  for &#40;var expression in expressions&#41; &#123;
    text = text.replace&#40;new RegExp&#40;expression, 'g'&#41;, expressions&#91;expression&#93;&#41;
  &#125;

  GR  = 'αάβγδεέζηθιίϊκλμνξοόπρσςτυύϋφχψωώ'
  ENG = 'aavgdeezi.iiiklmnxooprsstyyyf..oo'
  var output = ''
  for &#40;var i = 0; i < text.length; i++&#41; &#123;
    var ch = text.charAt&#40;i&#41;
    var pos = GR.indexOf&#40;ch&#41;
    output += &#40;pos < 0&#41; ? ch &#58; ENG.charAt&#40;pos&#41;
  &#125;
  return output.toUpperCase&#40;&#41;
&#125;
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

st3F0s
Δημοσιεύσεις: 17
Εγγραφή: 08 Νοέμ 2005 16:37

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από st3F0s » 25 Νοέμ 2005 19:45

*** ΚΑΤΑΠΛΗΚΤΙΚΑ ***

Ευχαριστώ πολύ !!!

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από panosru » 07 Μαρ 2006 09:44

Oraio script skeftomile !! :D
poly xrhshmo!!

mia erothsh mono, an exo ena keimono 10 - 20 selides, epidi blaipo pos to script saronei to keimeno para poles fores, den tha argei poly? :/

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 07 Μαρ 2006 22:04

Το πρώτο loop κάνει καμιά εικοσαριά αντικαταστάσεις που είναι ιδιαίτερα γρήγορες για οποιοδήποτε μέγεθος κειμένου.

Το δεύτερο loop αντίθετα πηγαίνει γράμμα-γράμμα και κάνει string concatenation οπότε θα είναι σίγουρα αργό για κείμενα μεγάλου μεγέθους. Πιθανότατα πάνω από 100KB θα αρχίσουν να υπάρχουν προβλήματα. Ο κώδικας μπορεί να βελτιστοποιηθεί ώστε να γίνεται με replace και το δεύτερο πακέτο των αλλαγών.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από panosru » 07 Μαρ 2006 22:40

ok thanks! mou kanei kai opos einai (poly xrhshmo!) :D

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από skeftomilos » 11 Μαρ 2006 03:29

Το script είναι πράγματι αργό για μεγάλα κείμενα. Ένα κείμενο 30KB χρειάστηκε 4 sec στον Celeron 2.4 που έχω. Η παρακάτω είναι μια πιο γρήγορη έκδοση. Για κείμενο 1MB χρειάστηκε λιγότερο από μισό δευτερόλεπτο στον IE. Ο Firefox έχει κάπως πιο αργή RegExp engine, και ακόμα πιο αργή ο Opera.

Κώδικας: Επιλογή όλων

function translate&#40;text&#41; &#123;
  var expressions = &#123;
    'αι'                    &#58; 'ai',
    'αυ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'af$1',
    'αυ'                    &#58; 'av',
    'οι'                    &#58; 'oi',
    'ου'                    &#58; 'ou',
    'ει'                    &#58; 'ei',
    'ευ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'ef$1',
    'ευ'                    &#58; 'ev',
    
    '&#40;^|\\s&#41;μπ'             &#58; '$1b',
    'μπ&#40;\\s|$&#41;'             &#58; 'b$1',
    'μπ'                    &#58; 'mp',
    'ντ'                    &#58; 'nt',
    'τσ'                    &#58; 'ts',
    'τζ'                    &#58; 'tz',
    'γγ'                    &#58; 'ng',
    'γκ'                    &#58; 'gk',
    'ηυ&#40;&#91;θκξπσςτφχψ&#93;|\\s|$&#41;'&#58; 'if$1',
    'ηυ'                    &#58; 'iy',
    
    'θ'                     &#58; 'th',
    'χ'                     &#58; 'ch',
    'ψ'                     &#58; 'ps'
  &#125;
  var GR  = 'αάβγδεέζηθιίϊκλμνξοόπρσςτυύϋφχψωώ'
  var ENG = 'aavgdeezi.iiiklmnxooprsstyyyf..oo'
  for &#40;var i = 0; i < GR.length; i++&#41; &#123;
    if &#40;!expressions&#91;GR.charAt&#40;i&#41;&#93;&#41; &#123;
      expressions&#91;GR.charAt&#40;i&#41;&#93; = ENG.charAt&#40;i&#41;
    &#125;
  &#125;
  text = text.toLowerCase&#40;&#41;
  for &#40;var expression in expressions&#41; &#123;
    text = text.replace&#40;new RegExp&#40;expression, 'g'&#41;, expressions&#91;expression&#93;&#41;
  &#125;
  return text.toUpperCase&#40;&#41;
&#125;
Στην πραγματικότητα ο παρακάτω κώδικας είναι ακόμα πιο γρήγορος αλλά δεν τρέχει στον IE5:

Κώδικας: Επιλογή όλων

  ...
  var GR  = 'αάβγδεέζηθιίϊκλμνξοόπρσςτυύϋφχψωώ'
  var ENG = 'aavgdeezi.iiiklmnxooprsstyyyf..oo'
  var Mirror = &#123;&#125;
  for &#40;var i = 0; i < GR.length; i++&#41; &#123;
    Mirror&#91;GR.charAt&#40;i&#41;&#93; = ENG.charAt&#40;i&#41;
  &#125;
  expressions&#91;'&#91;' + GR + '&#93;'&#93; = function&#40;$0&#41; &#123;return Mirror&#91;$0&#93;&#125;
  ...
Τώρα θα μου πείτε πού είναι χρήσιμη αυτή η ρουτίνα να μου φύγει η απορία; :)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

kalxas
Δημοσιεύσεις: 8
Εγγραφή: 30 Απρ 2006 18:24

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από kalxas » 03 Ιουν 2006 11:41

skeftomilos έγραψε: Τώρα θα μου πείτε πού είναι χρήσιμη αυτή η ρουτίνα να μου φύγει η απορία; :)
skeftomile, έφτιαξες ένα πάρα πολύ καλό scipt και εδώ είναι η δύναμη του προγραμματιστή να φτιάχνει πράγματα που τα χρειάζονται οι άλλοι χωρίς να γνωρίζει ο ίδιος για που θα χρησιμοποιηθούν.

Ωστόσο ο φίλος που το ζήτησε θα έπρεπε να είχε και την ευγένεια να σου λύσει την απορία, εκτός και αν στην έλυσε με PM. :o

Όπως και να έχει το πράγμα χρειάστηκα πρόσφατα ακριβώς αυτή η λύση :kaloe: και πολύ γρήγορα χάρη τους φίλους του freestuff τη βρήκα :lol:

Προσωπικά θα τη χρησιμοποιήσω στο site μου για αυτόματη μετατροπή των π.χ. Διευθύνσεων με ελληνικά γράμματα σε Διευθύνσεις με λατινικά γράμματα για να μη γράφει πολλά ο επισκέπτης. Βέβαια τα μεταφράζει όλα κεφαλαία ή μικρά και χάνει τα πεζοκεφαλαία ωστόσο αυτό είναι κάτι που το ξεπερνάει κανείς.

Έχω να κάνω ακόμα μια επισήμανση καθότι και εγώ μόλις χθες τυχαία την ανακάλυψα. Αν κάποιος είναι σε ελληνικό πληκτρολόγιο και πατήσει το shift w και στη συνέχεια ένα από τα γράμματα ι ή υ θα πάρει τα αντίστοιχα ΐ και ΰ

οπότε για τέλεια μετατροπή των ελληνικών σε λατινικά θα προτείνα να προστεθούν τα 2 αυτά γράμματα στο sript

Κώδικας: Επιλογή όλων

...
  var GR  = 'αάβγδεέζηθιίϊΐκλμνξοόπρσςτυύϋΰφχψωώ'
  var ENG = 'aavgdeezi.iiiiklmnxooprsstyyyyf..oo' 
...
kalxas

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743

Δημοσίευση από panosru » 03 Ιουν 2006 15:58

ox skeftomile sorry!!!!!! (shit rompa egina :P) to ksexasa :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

emena prosopika den mou xreiastike se tpt parapano apo to na kano to eksis:
exo ena file upload system kai hthela na allazo ta gramata apo ellhnika se greeklish kai ta kena se underscore _ alla meta mou zhtithike kai ena gia na metatrepei kai keimena etsi (gia mail system thelan na ta stelnoun se greeklish) gi' ayto sto zhthsa...

kai epidi bariomoun na metatrepso ton kodika sou se php kalousa meso tis php thn JavaScript function pou eftiakses :P

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης