| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Как конвертнуть n символы в 'n' текст |
| Автор: Innuendo 16.8.2006, 00:25 |
| У меня вот такая проблема. Мне нужно сохранить введеный в текстареу текст в переменную стринговую. Но так сохранить, чтоб потом при выводе знаки перехода сохранялись. Как в текстареии убрать все переходы строки и вместо них поставить \n - ну чтоб это было стринг в 1 строку, с вот такими переходами строк. И так же нужно будет сделать обратную функцию. т.е. из переменной текст переходит в текстареу и все ентеры (в виде символов \n или ещё как-то) превратятся в настроящие ентеры =) |
| Автор: 12345c 16.8.2006, 00:37 |
| В строке без проблем сохраняются переводы строк. Это нужно только при генерации строки в HTML-коде. s.replace(/\r?\n/g,"\\n") Обратно - s.replace(/\\n\g,"\n") |
| Автор: Innuendo 16.8.2006, 12:08 |
| спасибо конечно, но, честно не совсем понял как расшиврофать этот reg exp... А хотелось бы, не люблю тупо копировать что-то... и во-втором реге, разве перед g должен быть не в другую сторону слэш? |
| Автор: Sardar 16.8.2006, 12:17 |
| \r?\n - не обязательный \r и затем \n, под *nix и win, но не под старый мак, там только \r g - модификатор глобального рега, не остановиться найдя первое совпадение В "Обратно" ошибка, \g заменяем на /g. |
| Автор: Innuendo 16.8.2006, 12:43 | ||
| а вот такая проблема: для теста сделал 1 текстареа и 1 див. Надо чтоб при клике на текстарею её содержимое перешло в див. Чтоб переходы сохранились:
завожу пару строк в текстарею, кликаю по ней, и в диве отображаются вместо ентеров просто /n... почему не конвертируется? Добавлено @ 12:46 вообще-то.. мне вот что надо сделать: Пользователь вводит текст в текстарею. Скрипт переводит строку в уникод, и конвертируют переходы (чтоб они сохранились). Хранит эту строку в переменной. Потом при вызове её он просто получает в другой текстареи то что он ввёл но уже переведенное обратно на русский, и с переходами. Сейчас пока-что у меня все мои строки хранятся в массиве, и они там уже так и хранятся в уникоде, и с \n вместо ентеров. Но во-первых это придаёт громоздкость файлу, а во-вторых то, что я делаю как раз и надо чтоб пользователь мог сам заносить новые строки. |
| Автор: Sardar 16.8.2006, 15:03 | ||
Не /n, a \n. Ты этого и хотел, заменить все вхождения символов \n на строки "\n", т.е. получаеться одна большая строка. Её ты вставляешь в div, в чём проблема? Если хочешь что бы и в диве переводы строк отображались "правильно", то заменяй на "<br />\n".
Как понять сохранились? Кто/что убивает символы перевода строки? Что пишем, не интерактивный транслит? |
| Автор: Innuendo 16.8.2006, 16:00 | ||||||
неа =) Пишем быстрые ответы на письма. Т.е. ответы по шаблонам. Есть выпадающий список, там название шаблонов, я выбираю один и ответ вставляются в текстарею. Но мне часто надо редактировать шаблоны, поэтому надо всё время редактировать сам .js файл и в нём масссив, а потом и выпадающий список редактировать, и так как у меня это xul приложение, то надо заново паковать, и инсталлировать. Поэтому решил вот написать редактор шаблонов: Текстареа, панель кнопкочек. Пользователь вводит в текстарею сообщение, оно перводится в уникод, сохраняются пеерходы строг и загоняется в стринг. Стринг загоняется в xml-структуру, которая сохраняется в префах, и из неё можно загружать шаблоны. да, сорри, опечатался.
А... с дивом понятно. но мне вообще-то надо чтоб он вставлял потом в текстарею... Я щас подредактировал скрипт... Если я вставляю в текстару просто скопированный текст, то он вставляется с переходами как следует, а еслия преобрузую через replace, то выводится в одну строку с /n Странно, тогда получается мне вообще не надо ничего преобразовать с этими переходами? Чё-то я запутался... Вот посмотрите тестовый пример:
Добавлено @ 16:08 В этом примере. Ввожу в текстарею 2 строки: Test1 и Test2 (через Ентер) В ответах получаю:
Я вот что не пойму, если он во-втором случае преобразовал строку и строка была "Test1\nTest2", то почемув строке "Line1\nLine2", которую я сам создал он поставил ентер? |
| Автор: Sardar 16.8.2006, 17:19 |
Потому что \n в строке заменяеться на символ перевода строки, как в C, Java, C# и т.д. В исходниках имею в виду, это выполняеться парсером. \n в коде (обязан записать как "\\n", т.е. экранируем \ символ) принимаеться как текст, в JS строки вообще не имеют скрытых фильтров. Innuendo, я всё понял, решение: ничего не делай |
| Автор: Innuendo 16.8.2006, 20:19 | ||||
ааа, блин у нас же : s1.replace(/\r?\n/g,"\\n"); там 2 слэша, первый означает что воспринимать литерально... Точно, вот что значит плохо знать reg Exp =( ок =)
да я так решил потому что я же сначала шаблоны забивал в строки сам. Они у меня вообще когда не было программы и отвечал на письма вручную, были просто в блокнотике. Когда решил сделать "отвечалку", стал заносить их в массив, и там строка обрывалась на ентере, и я все ентеры поменял на \n =) Ладно, ок.. думаю если я ничего не буду делать с этими переходами, то всё будет ОК =) |
| Автор: 12345c 16.8.2006, 22:11 | ||
|
| Автор: Innuendo 16.8.2006, 22:35 |
| да, не заметил =) |