freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

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


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » JavaScript και Frameworks
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 3 [33 Μηνύματα]      Bookmarks Tags: μετατροπή Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
Σελίδα:  1, 2, 3 Επόμενο
ΑποστολέαςΜήνυμα
st3F0s


Μέλος από: 08 Νοε 2005
Βοηθήματα: 1
Μηνύματα: 17


View users profile
ΜήνυμαΣτις: 08 Νοε 2005 17:05    Θέμα: Μετατροπή Ελληνικών σε Λατινικά, κατά το πρότυπο elot 743 Απάντηση με παράθεση  Mark this post and the followings unread

Φίλοι μου επιθυμώ να εφαρμόσω τους παρακάνω κανόνες σε 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


Μέλος από: 08 Νοε 2005
Βοηθήματα: 1
Μηνύματα: 17


View users profile
ΜήνυμαΣτις: 20 Νοε 2005 12:05    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Μετά από αρκετή μελέτη των 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 (i=0;i<document.forms[formname].elements[field1].value.length;i++)
          (
            document.forms[formname].elements[field2].value += convertchar(document.forms[formname].elements[field1].value.charAt(i))
          )
      oldtext=document.forms[formname].elements[field1].value;

var objRegExp = /(AI)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "AI");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(OI)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "OI");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EI)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "EI");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(OY)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "OU");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)$/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "AF");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)$/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "EF");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YT)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "FT");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YK)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "FK");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YX)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "FX");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YP)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "FP");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YS)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "FS");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YF)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "FF");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YC)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "FC");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YV)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VV");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YG)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VG");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YD)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VD");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YZ)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VZ");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YL)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VL");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YM)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VM");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YN)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VN");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YR)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VR");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YA)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VA");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YE)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VE");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YI)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VI");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YO)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VO");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(AY)?(YY)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VY");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /^(IY)?(YV)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IY");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YV)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VV");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YG)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VG");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YD)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VD");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YZ)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VZ");
document.forms[formname].elements[field2].value = strReverseName; //ok

var objRegExp = /(EY)?(YL)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VL");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YM)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VM");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YN)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VN");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YR)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VR");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YA)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VA");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YE)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VE");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YI)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VI");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YO)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VO");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(EY)?(YY)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "VY");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /\b(MP)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "B");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(MP)\b/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "B");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(NT)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "NT");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(TS)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "TS");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(TZ)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "TZ");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(GG)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "NG");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(GK)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "GK");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IY)$/g; //
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IF");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVV)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYV");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVG)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYG");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVD)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYD");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVZ)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYZ");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVL)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYL");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVM)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYM");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVN)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYN");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVR)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYR");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVA)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYA");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVE)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYE");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVI)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYI");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVO)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYO");
document.forms[formname].elements[field2].value = strReverseName;

var objRegExp = /(IVY)/g;
var strField2 = document.forms[formname].elements[field2].value;
var strReverseName = strField2.replace(objRegExp, "IYY");
document.forms[formname].elements[field2].value = strReverseName;

}
EneMe
Super Moderator

Μέλος από: 09 Ιουλ 2002
Βοηθήματα: 10
Νέα: 11
Μηνύματα: 256+

Περιοχή: Στα όρη, στα άγρια βουνά, μέσα στα κοσμικά χιόνια!
View users profile Visit posters website
blog deviantART twitter deviantART 
ΜήνυμαΣτις: 20 Νοε 2005 14:06    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Έχεις ξεχάσει το α.

_________________
AmfissaPress.gr - Ειδήσεις από Φωκίδα - Δήμο Δελφών - Δήμο Δωρίδας
Εκτιμήσεις ακινήτων - Ενεργειακές επιθεωρήσεις - Τοπογραφικά - Οικοδομικές άδειες - ¶δειες καταστημάτων
st3F0s


Μέλος από: 08 Νοε 2005
Βοηθήματα: 1
Μηνύματα: 17


View users profile
ΜήνυμαΣτις: 20 Νοε 2005 19:28    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Είναι στο πρώτο if
κώδικας:

function convertchar(inp_char)
{
if (inp_char=="α") {return "A"}


Σίγουρα υπάρχει τρόπος να μπούνε όλοι οι χαρακτήρες σ' ενα πίνακα, όπως επίσης και οι αντίστοιχοι έλεγχοι στα regular expressions και αυτό είναι το ζητούμενο.
EneMe
Super Moderator

Μέλος από: 09 Ιουλ 2002
Βοηθήματα: 10
Νέα: 11
Μηνύματα: 256+

Περιοχή: Στα όρη, στα άγρια βουνά, μέσα στα κοσμικά χιόνια!
View users profile Visit posters website
blog deviantART twitter deviantART 
ΜήνυμαΣτις: 21 Νοε 2005 01:07    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Ωπ, ναι, δεν το είδα...

_________________
AmfissaPress.gr - Ειδήσεις από Φωκίδα - Δήμο Δελφών - Δήμο Δωρίδας
Εκτιμήσεις ακινήτων - Ενεργειακές επιθεωρήσεις - Τοπογραφικά - Οικοδομικές άδειες - ¶δειες καταστημάτων
cordis
Administrator, [F|H]ounder, [C|S]EO

Μέλος από: 09 Οκτ 1999
Βοηθήματα: 95
Νέα: 478
Templates: 1
Scripts: 2
Μηνύματα: 256+

Περιοχή: Greece
View users profile Visit posters website
blog cv flickr picasa facebook linkedin 
twitter friendfeed deviantART del.icio.us 
ΜήνυμαΣτις: 21 Νοε 2005 11:35    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Πολύ ωραίος..

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

alkisg


Μέλος από: 03 Ιουν 2005
Βοηθήματα: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile Visit posters website
ΜήνυμαΣτις: 21 Νοε 2005 12:09    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Παπαπα!

Βάλε βρε έναν πίνακα να βρεις την υγειά σου! Τόσες 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

Μέλος από: 07 Ιαν 2005
Βοηθήματα: 33
Νέα: 1
Μηνύματα: 256+

Περιοχή: Αθήνα
View users profile
ΜήνυμαΣτις: 23 Νοε 2005 09:47    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

κώδικας:
function translate(text) {
  expressions = {
    'αι'                    : 'ai',
    'αυ([θκξπσςτφχψ]|\\s|$)': 'af$1',
    'αυ'                    : 'av',
    'οι'                    : 'oi',
    'ου'                    : 'ou',
    'ει'                    : 'ei',
    'ευ([θκξπσςτφχψ]|\\s|$)': 'ef$1',
    'ευ'                    : 'ev',
   
    '(^|\\s)μπ'             : '$1b',
    'μπ(\\s|$)'             : 'b$1',
    'μπ'                    : 'mp',
    'ντ'                    : 'nt',
    'τσ'                    : 'ts',
    'τζ'                    : 'tz',
    'γγ'                    : 'ng',
    'γκ'                    : 'gk',
    'ηυ([θκξπσςτφχψ]|\\s|$)': 'if$1',
    'ηυ'                    : 'iy',
   
    'θ'                     : 'th',
    'χ'                     : 'ch',
    'ψ'                     : 'ps'
  }
  text = text.toLowerCase()
  for (var expression in expressions) {
    text = text.replace(new RegExp(expression, 'g'), expressions[expression])
  }

  GR  = 'αάβγδεέζηθιίϊκλμνξοόπρσςτυύϋφχψωώ'
  ENG = 'aavgdeezi.iiiklmnxooprsstyyyf..oo'
  var output = ''
  for (var i = 0; i < text.length; i++) {
    var ch = text.charAt(i)
    var pos = GR.indexOf(ch)
    output += (pos < 0) ? ch : ENG.charAt(pos)
  }
  return output.toUpperCase()
}

_________________
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.
st3F0s


Μέλος από: 08 Νοε 2005
Βοηθήματα: 1
Μηνύματα: 17


View users profile
ΜήνυμαΣτις: 25 Νοε 2005 19:45    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

Μέλος από: 13 Σεπ 2005
Βοηθήματα: 2
Scripts: 2
Μηνύματα: 256+

Περιοχή: Camp
View users profile
ΜήνυμαΣτις: 07 Μαρ 2006 09:44    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Oraio script skeftomile !!
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

Μέλος από: 07 Ιαν 2005
Βοηθήματα: 33
Νέα: 1
Μηνύματα: 256+

Περιοχή: Αθήνα
View users profile
ΜήνυμαΣτις: 07 Μαρ 2006 22:04    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

_________________
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.
panosru
WebDev Moderator

Μέλος από: 13 Σεπ 2005
Βοηθήματα: 2
Scripts: 2
Μηνύματα: 256+

Περιοχή: Camp
View users profile
ΜήνυμαΣτις: 07 Μαρ 2006 22:40    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

ok thanks! mou kanei kai opos einai (poly xrhshmo!)
skeftomilos
Script Master

Μέλος από: 07 Ιαν 2005
Βοηθήματα: 33
Νέα: 1
Μηνύματα: 256+

Περιοχή: Αθήνα
View users profile
ΜήνυμαΣτις: 11 Μαρ 2006 03:29    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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


Στην πραγματικότητα ο παρακάτω κώδικας είναι ακόμα πιο γρήγορος αλλά δεν τρέχει στον IE5:

κώδικας:
  ...
  var GR  = 'αάβγδεέζηθιίϊκλμνξοόπρσςτυύϋφχψωώ'
  var ENG = 'aavgdeezi.iiiklmnxooprsstyyyf..oo'
  var Mirror = {}
  for (var i = 0; i < GR.length; i++) {
    Mirror[GR.charAt(i)] = ENG.charAt(i)
  }
  expressions['[' + GR + ']'] = function($0) {return Mirror[$0]}
  ...


Τώρα θα μου πείτε πού είναι χρήσιμη αυτή η ρουτίνα να μου φύγει η απορία;

_________________
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.
kalxas


Μέλος από: 30 Απρ 2006
Μηνύματα: 8

View users profile
ΜήνυμαΣτις: 03 Ιουν 2006 10:41    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

skeftomilos ανέφερε:

Τώρα θα μου πείτε πού είναι χρήσιμη αυτή η ρουτίνα να μου φύγει η απορία;


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

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

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

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

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

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

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


kalxas
panosru
WebDev Moderator

Μέλος από: 13 Σεπ 2005
Βοηθήματα: 2
Scripts: 2
Μηνύματα: 256+

Περιοχή: Camp
View users profile
ΜήνυμαΣτις: 03 Ιουν 2006 14:58    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

ox skeftomile sorry!!!!!! (shit rompa egina ) to ksexasa

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
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 3 [33 Μηνύματα] Σελίδα:  1, 2, 3 Επόμενο
Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » JavaScript και Frameworks
Τώρα είναι 18 Ιαν 2017 20:13 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos