Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Переводчик слов (https://javascript.ru/forum/misc/14395-perevodchik-slov.html)

Гугл-мен 14.01.2011 13:24

Переводчик слов
 
люди пожалуйста вы бы не могли дать простейший переводчик слов допустим человек написал ghbdtn-а ему скритп перевел привет..

Matre 14.01.2011 14:18

<html>
<body>

<input id="enter" />
<input type="button" value="перевести" onclick="perevesti();" />
<br />
<input id="autput" />

<script>
MAP = {
'a' : 'ф',
'b' : 'и',
'c' : 'с',
'd' : 'в',
'e' : 'у',
'f' : 'а'
};
I = document.getElementById('enter');
O = document.getElementById('autput');
function perevesti() {
S = '';
for (var i = 0; i < I.value.length; i++)
{
CHAR = I.value.charAt(i);
LOWER = CHAR.toLowerCase();
if (CHAR == CHAR.toUpperCase())
UPPER = 1;
else
UPPER = 0;
S += LOWER in MAP ? MAP[CHAR.toLowerCase()][UPPER ? 'toUpperCase' : 'toString']() : CHAR;
}
O.value = S;
}
</script>

</body>
</html>


буквы заполните сами. они начинаються с 10-ая строки,разберетесь

Skipp 14.01.2011 16:12

Matre,
Не обижайтесь, если вас конечно это обидит, но ваш код при первом впечатлении как будто был написан 10 лет назад да и причём на ассемблере.

DooMer 14.01.2011 17:53

Skipp,
но всетаки положительные сдвиги есть =)

Matre 14.01.2011 20:18

Цитата:

Не обижайтесь, если вас конечно это обидит, но ваш код при первом впечатлении как будто был написан 10 лет назад да и причём на ассемблере.
LOL

var map = {
	'a' : 'ф',
	'b' : 'и',
	'c' : 'с',
	'd' : 'в',
	'e' : 'у',
	'f' : 'а'
},
input = document.getElementById('enter'),
output = document.getElementById('autput'),
upper;
function translate() {
	var str = '';
	for (var i = 0; i < input.value.length; i++) {
		var char = input.value.charAt(i),
		lower = char.toLowerCase();
		upper = char == char.toUpperCase();
		str += lower in map ? map[lower][upper ? 'toUpperCase' : 'toString']() : char;
	}
	output.value = str;
}


а так лутше?
хотя назв переменых -не суть
только неговорите что мой коод уг потом учто
конструкция str += lower in map ? map[lower][upper ? 'toUpperCase' : 'toString']() : char; не читаема

Vulkan 14.01.2011 20:20

Цитата:

Сообщение от Matre (Сообщение 88033)
только неговорите что мой коод уг потом учто
конструкция str += lower in map ? map[lower][upper ? 'toUpperCase' : 'toString']() : char; не читаема

Очень даже читаема :)

Matre 14.01.2011 20:28

я так понимаю-это ирония?
а так:

var appchar;
if (lower in map)
	appchar = map[lower];
else
	appchar = char;
if (upper)
	appchar = appchar.toUpperCase();


если нет-приведите свой вариант
идеального кода
он ведь у вас идеальный
я уверен

Vulkan 14.01.2011 20:34

Matre, да это не ирония, наоборот говорю что грамотно использовал тернарный оператор.

Aetae 14.01.2011 22:11

Хмм, имхо - примерно так.
Вводить только слова в нижнем регистре).<br />
<input id="enter" />
<input type="button" value="перевести" />
<input id="autput" />

<script type="text/javascript">
var input=document.getElementsByTagName('input');
var q=' .,mnbvcxz\';lkjhgfdsa][poiuytrewq`ёйцукенгшщзхъфывапролджэячсмитьбю ',l=q.length-1;

input[1].onclick=function(){
  input[2].value=input[0].value.replace(/./g,function(a){return q.charAt(l-q.indexOf(a))})
}
</script>

Естесно нужно разделить русское и буржуйское, replace делать по диапазону, добавить проверку на регистр итд.


Часовой пояс GMT +3, время: 01:33.