Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как конвертнуть n символы в 'n' текст, пользуемся регами 
:(
    Опции темы
Innuendo
Дата 16.8.2006, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



У меня вот такая проблема.
Мне нужно сохранить введеный в текстареу текст в переменную стринговую.
Но так сохранить, чтоб потом при выводе знаки перехода сохранялись. Как в текстареии убрать все переходы строки и вместо них поставить \n - ну чтоб это было стринг в 1 строку, с вот такими переходами строк.

И так же нужно будет сделать обратную функцию. т.е. из переменной текст переходит в текстареу и все ентеры (в виде символов \n или ещё как-то) превратятся в настроящие ентеры =)


--------------------
=)
PM MAIL ICQ Jabber   Вверх
12345c
Дата 16.8.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



В строке без проблем сохраняются переводы строк. Это нужно только при генерации строки в HTML-коде.

s.replace(/\r?\n/g,"\\n")
Обратно -
s.replace(/\\n\g,"\n")
PM WWW   Вверх
Innuendo
Дата 16.8.2006, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



спасибо конечно, но, честно не совсем понял как расшиврофать этот reg exp... А хотелось бы, не люблю тупо копировать что-то...
и во-втором реге, разве перед g должен быть не в другую сторону слэш?


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Sardar
Дата 16.8.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



\r?\n - не обязательный \r и затем \n, под *nix и win, но не под старый мак, там только \r
g - модификатор глобального рега, не остановиться найдя первое совпадение

В "Обратно" ошибка, \g заменяем на /g.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Innuendo
Дата 16.8.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



Цитата(Sardar @  16.8.2006,  12:17 Найти цитируемый пост)
В "Обратно" ошибка, \g заменяем на /g. 

значит я прально заметил =)

Цитата(Sardar @  16.8.2006,  12:17 Найти цитируемый пост)
g - модификатор глобального рега, не остановиться найдя первое совпадение

спасибо, а то не понимал что такое глобальный рег =)

спасибо, вроде понял.


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Innuendo
Дата 16.8.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



а вот такая проблема:
для теста сделал 1 текстареа и 1 див. Надо чтоб при клике на текстарею её содержимое перешло в див. Чтоб переходы сохранились:
Код

<textarea id="input" onclick="mytest()" /></textarea>
<div id="output"> </div>
<script>
function mytest(){
var output1 ="";
var input1  = "";
input1 = document.getElementById("input").value;
output1 = input1.replace(/\r?\n/g,"\\n");
document.getElementById("output").innerHTML = output1;
}
</script>


завожу пару строк в текстарею, кликаю по ней, и в диве отображаются вместо ентеров просто /n... почему не конвертируется?

Добавлено @ 12:46 
вообще-то.. мне вот что надо сделать:
Пользователь вводит текст в текстарею.
Скрипт переводит строку в уникод, и конвертируют переходы (чтоб они сохранились). Хранит эту строку в переменной.
Потом при вызове её он просто получает в другой текстареи то что он ввёл но уже переведенное обратно на русский, и с переходами.
Сейчас пока-что у меня все мои строки хранятся в массиве, и они там уже так и хранятся в уникоде, и с \n вместо ентеров. Но во-первых это придаёт громоздкость файлу, а во-вторых то, что я делаю как раз и надо чтоб пользователь мог сам заносить новые строки.


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Sardar
Дата 16.8.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Innuendo @  16.8.2006,  11:43 Найти цитируемый пост)
и в диве отображаются вместо ентеров просто /n

Не /n, a \n. Ты этого и хотел, заменить все вхождения символов \n на строки "\n", т.е. получаеться одна большая строка. Её ты вставляешь в div, в чём проблема? Если хочешь что бы и в диве переводы строк отображались "правильно", то заменяй на "<br />\n".

Цитата(Innuendo @  16.8.2006,  11:43 Найти цитируемый пост)
Скрипт переводит строку в уникод, и конвертируют переходы (чтоб они сохранились)

Как понять сохранились? Кто/что убивает символы перевода строки?

Что пишем, не интерактивный транслит? smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Innuendo
Дата 16.8.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



Цитата(Sardar @  16.8.2006,  15:03 Найти цитируемый пост)
Что пишем, не интерактивный транслит? smile 

неа =) Пишем быстрые ответы на письма. Т.е. ответы по шаблонам. Есть выпадающий список, там название шаблонов, я выбираю один и ответ вставляются в текстарею.
Но мне часто надо редактировать шаблоны, поэтому надо всё время редактировать сам .js файл и в нём масссив, а потом и выпадающий список редактировать, и так как у меня это xul приложение, то надо заново паковать, и инсталлировать.
Поэтому решил вот написать редактор шаблонов:
Текстареа, панель кнопкочек. Пользователь вводит в текстарею сообщение, оно перводится в уникод, сохраняются пеерходы строг и загоняется в стринг. Стринг загоняется в xml-структуру, которая сохраняется в префах, и из неё можно загружать шаблоны.


Цитата(Sardar @  16.8.2006,  15:03 Найти цитируемый пост)
Не /n, a \n.

да, сорри, опечатался.
Цитата

Ты этого и хотел, заменить все вхождения символов \n на строки "\n", т.е. получаеться одна большая строка. Её ты вставляешь в div, в чём проблема? Если хочешь что бы и в диве переводы строк отображались "правильно", то заменяй на "<br />\n".

А... с дивом понятно. но мне вообще-то надо чтоб он вставлял потом в текстарею...
Я щас подредактировал скрипт... Если я вставляю в текстару просто скопированный текст, то он вставляется с переходами как следует, а еслия  преобрузую через replace, то выводится в одну строку с /n
Странно, тогда получается мне вообще не надо ничего преобразовать с этими переходами?

Чё-то я запутался...
Вот посмотрите тестовый пример:
Код

<html>
<head>
<script>
<!--
function mytest(){
var s1 = s2 = "";
s1 = document.getElementById("t").value;
s2 = s1.replace(/\r?\n/g,"\\n");
var s3 = "Line1\nLine2"
document.getElementById("t1").value = s1;
document.getElementById("t2").value = s2;
document.getElementById("t3").value = s3;
//->
}
</script>
</head>
<body>
Введите пару строк текста и нажмите на кнопку "Пуск"
<textarea id="t" > </textarea><br />
<input onclick="mytest()" type="button" value="Пуск" />
<hr />
1)Копируем содержимое первой текстареи и вставляем сюда:<br />
<textarea id="t1"> </textarea><br />
2)Преобразовываем содержимое первой текстареии через <strong>replace(/\r?\n/g,"\\n")</strong> и вставляем:<br />
<textarea id="t2"> </textarea><br />
3)Вставляем готовую переменную <strong>Line1\nLine2</strong> в текстарею:<br />
<textarea id="t3"> </textarea>
</body>
</html>



Добавлено @ 16:08 
В этом примере. Ввожу в текстарею 2 строки: Test1 и Test2 (через Ентер)
В ответах получаю:
Цитата

1) 
Test1
Test2
2)
Test1\nTest2
3)
Line1
Line2

Я вот что не пойму, если он во-втором случае преобразовал строку и строка была "Test1\nTest2", то почемув строке "Line1\nLine2", которую я сам создал он поставил ентер?


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Sardar
Дата 16.8.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Innuendo @  16.8.2006,  15:00 Найти цитируемый пост)
которую я сам создал он поставил ентер? 

Потому что \n в строке заменяеться на символ перевода строки, как в C, Java, C# и т.д.  В исходниках имею в виду, это выполняеться парсером. \n в коде (обязан записать как "\\n", т.е. экранируем \ символ) принимаеться как текст, в JS строки вообще не имеют скрытых фильтров.

Innuendo, я всё понял, решение: ничего не делай  smile   В прямом смысле не каверкай строки, символы перевода строки убиваться при копировании с textarea в textarea (и любой другой компонент не убиающий пробельные символы, например pre) не будут. И с чего ты решил что переменная в JS не может держать текст из многих строк...?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Innuendo
Дата 16.8.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



Цитата(Sardar @  16.8.2006,  17:19 Найти цитируемый пост)
Потому что \n в строке заменяеться на символ перевода строки, как в C, Java, C# и т.д.  В исходниках имею в виду, это выполняеться парсером. \n в коде (обязан записать как "\\n", т.е. экранируем \ символ) принимаеться как текст, в JS строки вообще не имеют скрытых фильтров.

ааа, блин
у нас же :
s1.replace(/\r?\n/g,"\\n");
там 2 слэша, первый означает что воспринимать литерально... Точно, вот что значит плохо знать reg Exp =(


Цитата(Sardar @  16.8.2006,  17:19 Найти цитируемый пост)
Innuendo, я всё понял, решение: ничего не делай  smile 

ок =)

Цитата(Sardar @  16.8.2006,  17:19 Найти цитируемый пост)
И с чего ты решил что переменная в JS не может держать текст из многих строк...? 

да я так решил потому что я же сначала шаблоны забивал в строки сам. Они у меня вообще когда не было программы и отвечал на письма вручную, были просто в блокнотике. Когда решил сделать "отвечалку", стал заносить их в массив, и там строка обрывалась на ентере, и я все ентеры поменял на \n =)

Ладно, ок.. думаю если я ничего не буду делать с этими переходами, то всё будет ОК =)

Это сообщение отредактировал(а) Innuendo - 16.8.2006, 20:20


--------------------
=)
PM MAIL ICQ Jabber   Вверх
12345c
Дата 16.8.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Цитата(12345c @  16.8.2006,  00:37 Найти цитируемый пост)
В строке без проблем сохраняются переводы строк. Это нужно только при генерации строки в HTML-коде.
А это я для кого говорил ? ;)

PM WWW   Вверх
Innuendo
Дата 16.8.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



да, не заметил =)


--------------------
=)
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.