folder Tahribat.com Forumları
linefolder Html - CSS - XML - JavaScript - Ajax
linefolder Javascriptte Türkçe Karakterleri Nasıl Ayıklarım?



Javascriptte Türkçe Karakterleri Nasıl Ayıklarım?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Ş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('');
        }

     

     


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek

    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

    iyibu! yeniden..
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    burada 5000 karakterlik uzun bir metinde 3 farklı karakter değiştirme yönteminin benchmark'ını yapmışlar (callback, indexof ve regex).

    https://www.quora.com/Whats-be-the-fastest-most-efficient-way-to-make-a-string-replacement-substition-within-a-large-string-with-JavaScript

    umarım işinizi görür.

     

    RockZs tarafından 14/Kas/15 11:29 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek

    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.


    anlıyorum.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hatayi
    hatayi's avatar
    Kayıt Tarihi: 08/Temmuz/2013
    Erkek

    konuyu takip edeyim...


    Tarikat-ı Aliyyeyi Tahribadiyye
Toplam Hit: 914 Toplam Mesaj: 5
javascript türkçe karakter ascii