Html - CSS - XML - JavaScript - Ajax
Javascriptte Türkçe Karakterleri Nasıl Ayıklarım?
Javascriptte Türkçe Karakterleri Nasıl Ayıklarım?
-
Şimdi ben bişey yaptım ama bu şey milyonlarca kere çalışacağı için performans peşindeyim. yaptığım şey pek içime sinmedi özellikle stringi karakterlere ayırıp birleştirme falan.
Regexli örnekler atmayın onlarla iş sonsuza kadar sürer. Daha iyi bir çözümü varmıdır sizce?
function Asciify(str) { if(str==undefined) return undefined; str = doCharRep( str, ['Ş','İ', 'ı','Ğ', 'ğ' , 'Ü', 'ü', 'ç', 'Ç', 'ö', 'Ö', 'ş','â', 'ê', 'î', 'û' , 'Â', 'Ê', 'Î', 'Û' ] , ['s','i', 'i','g', 'g' , 'u', 'u', 'c', 'c', 'o', 'o', 's','a', 'e', 'i', 'u' , 'a', 'e', 'i', 'u' ] ); str=str.toLowerCase(); return str; } function doCharRep(Input ,InputChars,ReplaceChars) { var chrArray=Input.split(''); for (var i=0; i < chrArray.length; i++){ for (var j=0; j < InputChars.length; j++){ if(InputChars[j]==chrArray[i]) chrArray[i]=ReplaceChars[j]; } } return chrArray.join(''); }
-
Amacın türkçe karakterleri eşdeğerlerine çevirmek mi hocam ğ->g gibi yoksa türkçe karakter varsa true false döndürmek mi
function str_replace(search, replace, subject, count) { var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0, f = [].concat(search), r = [].concat(replace), s = subject, ra = Object.prototype.toString.call(r) === '[object Array]', sa = Object.prototype.toString.call(s) === '[object Array]'; s = [].concat(s); if (count) { this.window[count] = 0; } for (i = 0, sl = s.length; i < sl; i++) { if (s[i] === '') { continue; } for (j = 0, fl = f.length; j < fl; j++) { temp = s[i] + ''; repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0]; s[i] = (temp) .split(f[j]) .join(repl); if (count && s[i] !== temp) { this.window[count] += (temp.length - s[i].length) / f[j].length; } } } return sa ? s : s[0]; } str = str_replace(['Ş','İ', 'ı','Ğ', 'ğ' , 'Ü', 'ü', 'ç', 'Ç', 'ö', 'Ö', 'ş','â', 'ê', 'î', 'û' , 'Â', 'Ê', 'Î', 'Û' ] , ['s','i', 'i','g', 'g' , 'u', 'u', 'c', 'c', 'o', 'o', 's','a', 'e', 'i', 'u' , 'a', 'e', 'i', 'u' ] , str);
by_Tet tarafından 14/Kas/15 10:13 tarihinde düzenlenmiştir -
burada 5000 karakterlik uzun bir metinde 3 farklı karakter değiştirme yönteminin benchmark'ını yapmışlar (callback, indexof ve regex).
umarım işinizi görür.
-
Regex niye tukaka yahu, JS'in Regex implementasyonu oldukça light, yılların birikimi ile en sikko hostta bile oldukça optimize edilmiş durumda.
Şöyle genişletilebilir bir örnek yazdım.
https://gist.github.com/anonymous/70aab933384573b4bef9
Bu aslan seninkinden her zaman daha hızlı çalışır. Aradaki zaman farkı ise konu metnin boyutu arttıkça gittikçe açılır, benden demesi.
Tabi burada hemen "hız" a odaklandık ama o milyonlarca çalışmanın maiyeti de önemli. Eğer mesele birim zamanda çok iş yapmaksa bu ve benzeri örnekler seninkinden daha performanslı olur.
Yok eğer eş zamanlı olarak bir çok işlemi ahenk ile yapmaksa mesele, belki biraz hızından feragat ederek daha az cpu ve bellek tüketen başka bir yol varsa uygulanabilir, profilleyip incelemek lazım.
-
konuyu takip edeyim...