Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Замена неправильно набраного текста


Автор: Bog d`An 23.3.2008, 23:46
Идея - создать аналог  ф-и квипа (о как сказанул), то бишь "ghbdtn" -> "привет"

Так как новичок в жс, просьба оптимизировать код

Код

function symbEnToRu(tmpstr)
{
    symbols = new Array();
    symbols['Q']='Й';
    symbols['W']='Ц';
    symbols['E']='У';
    symbols['R']='К';
    symbols['T']='Е';
    symbols['Y']='Н';
    symbols['U']='Г';
    symbols['I']='Ш';
    symbols['O']='Щ';
    symbols['P']='З';
    symbols['{']='Х';
    symbols['}']='Ъ';
    symbols['A']='Ф';
    symbols['S']='Ы';
    symbols['D']='В';
    symbols['F']='А';
    symbols['G']='П';
    symbols['H']='Р';
    symbols['J']='О';
    symbols['K']='Л';
    symbols['L']='Д';
    symbols[':']='Ж';
    symbols['"']='Э';
    symbols['Z']='Я';
    symbols['X']='Ч';
    symbols['C']='С';
    symbols['V']='М';
    symbols['B']='И';
    symbols['N']='Т';
    symbols['M']='Ь';
    symbols['<']='Б';
    symbols['>']='Ю';
    symbols['q']='й';
    symbols['w']='ц';
    symbols['e']='у';
    symbols['r']='к';
    symbols['t']='е';
    symbols['y']='н';
    symbols['u']='г';
    symbols['i']='ш';
    symbols['o']='щ';
    symbols['p']='з';
    symbols['[']='х';
    symbols[']']='ъ';
    symbols['a']='ф';
    symbols['s']='ы';
    symbols['d']='в';
    symbols['f']='а';
    symbols['g']='п';
    symbols['h']='р';
    symbols['j']='о';
    symbols['k']='л';
    symbols['l']='д';
    symbols[';']='ж';
    symbols["'"]='э';
    symbols['z']='я';
    symbols['x']='ч';
    symbols['c']='с';
    symbols['v']='м';
    symbols['b']='и';
    symbols['n']='т';
    symbols['m']='ь';
    symbols[',']='б';
    symbols['.']='ю';

    var result = "";
    for(i=0;i<tmpstr.length;i++)
        if (tmpstr[i] in symbols)
            result += symbols[tmpstr[i]];
        else
            result +=tmpstr[i];
    return result;
}


(вариант два, после того как бошка начала немного работать)

Автор: Grig 24.3.2008, 06:52
Присоединяюсь к вопросу:
при написании:
Код

function tt(code){
  var c="";
  for(var i=0;i<code.length;i++){
    c+=String.fromCharCode(code.charCodeAt(i)+127);
  }
  document.write(c); 
}
tt('bgfh');

выводится всякая ерунда в кодировке ISO-Latin
Как бы ее поменять?

Автор: ksnk 24.3.2008, 08:40
Bog d`An, Вот так - немного короче
Код

function symbEnToRu(tmpstr)
{
    symbols = { // отформатировано "по рядам клавиатуры"
    'Q':'Й', 'W':'Ц',  'E':'У',  'R':'К',  'T':'Е',  'Y':'Н',
    'U':'Г', 'I':'Ш',  'O':'Щ',  'P':'З',  '{':'Х',  '}':'Ъ',
    'A':'Ф', 'S':'Ы',  'D':'В',  'F':'А',  'G':'П',  'H':'Р',
    'J':'О', 'K':'Л',  'L':'Д',  ':':'Ж',  '"':'Э',   
    'Z':'Я', 'X':'Ч',  'C':'С',  'V':'М',  'B':'И',  'N':'Т',   
    'M':'Ь', '<':'Б',  '>':'Ю',  
    'q':'й', 'w':'ц',  'e':'у',  'r':'к',  't':'е',  'y':'н',
    'u':'г', 'i':'ш',  'o':'щ',  'p':'з',  '[':'х',  ']':'ъ',
    'a':'ф', 's':'ы',  'd':'в',  'f':'а',  'g':'п',  'h':'р',
    'j':'о', 'k':'л',  'l':'д',  ';':'ж',  "'":'э',  
    'z':'я', 'x':'ч',  'c':'с',  'v':'м',  'b':'и',  'n':'т',
    'm':'ь', ',':'б',  '.':'ю'}
var result = "";
    for(i=0;i<tmpstr.length;i++)
            result += symbols[tmpstr[i]] || tmpstr[i];
    return result;
}

Автор: Bog d`An 25.3.2008, 23:31
в ие6 не пашет%)

Автор: POLTER 25.3.2008, 23:47
Вот рабочий вариант, вроде пашет везде smile:
Код

function msgDecode(strSrc)
{
    var strTable1 = "qwertyuiop[]asdfghjklzxcvbnm,.QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>йцукенгшщзхъфывапролдячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЯЧСМИТЬБЮ'\";эЭж";
    var strTable2 = "йцукенгшщзхъфывапролдячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЯЧСМИТЬБЮqwertyuiop[]asdfghjklzxcvbnm,.QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>эЭж'\";";
    var strRet = "";
    var cTmp, nTmp;
    for (var i=0 ; i < strSrc.length ; i++)
    {
        cTmp = strSrc.charAt(i);
        nTmp = strTable1.indexOf(cTmp);
        if (nTmp >= 0) cTmp = strTable2.charAt(nTmp);
        strRet += cTmp;
    }
    return strRet;
}

Автор: ksnk 26.3.2008, 16:09
Цитата(Bog d`An @  25.3.2008,  23:31 Найти цитируемый пост)
в ие6 не пашет%)

вот так - пашет
Код

function symbEnToRu(tmpstr)
{
    symbols = { // отформатировано "по рядам клавиатуры"
    'Q':'Й', 'W':'Ц',  'E':'У',  'R':'К',  'T':'Е',  'Y':'Н',
    'U':'Г', 'I':'Ш',  'O':'Щ',  'P':'З',  '{':'Х',  '}':'Ъ',
    'A':'Ф', 'S':'Ы',  'D':'В',  'F':'А',  'G':'П',  'H':'Р',
    'J':'О', 'K':'Л',  'L':'Д',  ':':'Ж',  '"':'Э',   
    'Z':'Я', 'X':'Ч',  'C':'С',  'V':'М',  'B':'И',  'N':'Т',   
    'M':'Ь', '<':'Б',  '>':'Ю',  
    'q':'й', 'w':'ц',  'e':'у',  'r':'к',  't':'е',  'y':'н',
    'u':'г', 'i':'ш',  'o':'щ',  'p':'з',  '[':'х',  ']':'ъ',
    'a':'ф', 's':'ы',  'd':'в',  'f':'а',  'g':'п',  'h':'р',
    'j':'о', 'k':'л',  'l':'д',  ';':'ж',  "'":'э',  
    'z':'я', 'x':'ч',  'c':'с',  'v':'м',  'b':'и',  'n':'т',
    'm':'ь', ',':'б',  '.':'ю'}
var result = "";
    for(i=0;i<tmpstr.length;i++){
            var c=tmpstr.charAt(i);
            result += (symbols[c] || c);
    }
    return result;

}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)