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


Автор: BOPOH 11.12.2003, 23:57
Необходимо заменить все символы "A" на "Я" и все "ы" на "о" в поле <INPUT name=text> и передать данные в поле <TEXTAREA name=code>. По возможности, передача текста должна происходить при нажатии кнопки <INPUT type=button>.
Внизу я написал кодировку, которая у меня имеется (не очень то и много: собственно "тело" и скрипт на передачу информации из <INPUT name=text> в <TEXTAREA name=code>).
Если кто-то очень силен в программировании на Jscript'e: заменить все "пробелы" на заначение "\n" (переход на другую строку).

Код
<HTML><HEAD><TITLE>Замена символов</TITLE>
<script>
function printmytext() {
with (document)
{
code.value = text.value+"\n"+'<!-- Кодировка выдана -->'
}
}
</SCRIPT>
</HEAD>

<BODY>
<FONT face=Arial size=2>Введите текст: </FONT><BR>
<INPUT name=text size=40 value="А узнал чты у меня есть ыгрымная семья..."><BR>
<INPUT onclick=printmytext() type=button value="Загрузить"><BR>
<TEXTAREA name=code cols=40 rows=10>Нажмите на кнопку "Загрузить"
для замены символов в Вашем тексте.</TEXTAREA>
</BODY></HTML>


ПОМОГИТЕ, КТО ЧЕМ МОЖЕТ!!!

Автор: Nobody 12.12.2003, 19:30
Используй регексы (регулярные выражения).

Автор: [xoodo] 12.12.2003, 20:13
Код
t=document.getelementbyname().text;
for(i=0;i<t.length;i++)
{
   if(t.substring(i,1)=="А"){t.substring(i,1)="Я"}
   if(t.substring(i,1)==" "){t.substring(i,1)="\n"}
/*--
и так далее. Пока функция работает - завари себе чайку, пивка налей. Можешь поспать, но не долго. Не самый быстрый вариант...
--*/
}

А вставлять: document.getelementbyname().code.value=t;

Автор: BOPOH 14.12.2003, 03:30
to Nobody: Напиши хотя бы пример с описанием! Я бы попробовал разобраться...

to [xoodo]: А можно немного поподробнее. Естественно, в начале задаем var t. Если я вместо getelementbyname() пишу, допустим, detectform, а в теле дописываю <FORM name=detectform>, то в итоге document.getelementbyname().code.value=[object]. И что-такое "length" и "substring"?

Автор: Nobody 14.12.2003, 16:10
var str = "Кякой-ты кривый текст, в кытырым няды зяменить чты-ты.";
str = str.replace(new RegExp("ы","g"), "о");
str = str.replace(new RegExp("я","g"), "а");
alert(str);

Автор: Nobody 14.12.2003, 16:41
И вообще, читайте документацию!
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsoriJScript.asp

Автор: BOPOH 14.12.2003, 19:29
to Nobody: Спасибо за кодировку! Я в этом, кхе... в английском ничего не понимаю, ну совсем немного. Лучше сам буду разбираться.
А что такое new RegExp("ы","g"), "о");?:??

Автор: [xoodo] 14.12.2003, 21:29
1.
document.getElementByName().code - обращение к элементу, у которого задан атрибут name="code". Если мы зададим name="txt", то обращаться к элементу будем document.getElementByName().txt и.т.п.

2.
document.getElementByName().code.value - значение элемента. Грубо говоря, вернет в виде строки то, что записано в текстареа с именем code. Ошибка у меня была сначала... Именно это значение мы присвоим переменной t, или str, как товарищ рекомендовал:
t=document.getElementByName().code.value;

3.
t.length - длина строки t (см. пункт 2). Длина, напрмер, строки "синхрофазатрон" = 14.
t.substring(a, b) - подстрока, или часть строки t, начиная с элемента a, длиной b элементов. Нумерация элементов начинается с нуля.

Автор: BOPOH 15.12.2003, 02:28
to [xoodo]: Спасибо! Популярно объяснил. Но в метод г-на Nobody быстрее... сейчас не до пива, сессия на носу. Но задается такой вопрос: А если мне нужно заменить двойные кавычки (") на "<<", к примеру. Как тут поступить.
И скажите, пожалуйста, как опытные програмисты новечку: Jscript = Javascript или нет!
Когда закончу кодировку, напишу, зачем мне все это нужно! smile.gif
Еще раз спасибо, Bopo?

Автор: [xoodo] 15.12.2003, 18:56
Сессия - это да. Не ты один такой...

В любом из двух способов (ничейный действительно короче smile.gif):
Код

if(t.substring(i,1)=="\""){t.substring(i,1)="<<"}"
/*--ИЛИ--*/
t=t.replace(new RegExp("\"","g"), "<<"); //вроде так...

Символ \ - это указание, что следующий за ним символ (в нашем случае ") следует не интерпритировать, а читать как есть.

А, еще.

JScript не равно JavaScript. Первый - это что-то вроде мелкософтовских развлечений очередных, а второй, который мы и обсуждаем - это разработки Нетскейпа изначально.

Автор: Nobody 15.12.2003, 23:21
BOPOH
Флаг "g" означает, что замену надо производить по всей строке, а не только первое совпадение.

Автор: BOPOH 16.12.2003, 21:21
to NoBody & [xoodo]: Спасибо Вам огромное! Я сначала вообще-то проборал через REPLACE, но ерунда какая-то получалась. Сейчас займусь изменением источника... biggrin.gif *Сумашедший смех* hehe.gif
to All: Внимание создателям WAP-сайтов! baaa.gif Теперь Вы сможете получить дешифровщик, заменив, соответственно симвовы, как было указано в примере. Например: Б == &#x0411; и т.д. Да здравствует всемирная русификация! Конечно, можно было бы воспользоваться "Opera", но это дело сугубо каждого. wink.gif
Закрывайте тему!

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