Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2012, 18:54
Интересующийся
Отправить личное сообщение для Zlyden Посмотреть профиль Найти все сообщения от Zlyden
 
Регистрация: 27.10.2010
Сообщений: 19

Преобразование \n в перенос строки
Пользователь вводит строку в поле ввода, содержащую последовательности \n, \r, и другие спецсимволы в виде текста. Надо, чтобы перед обработкой все последовательности заменялись на спецсимволы. К примеру, ввёл юзер "asdf\nasdf", и это воспринималось именно как
"asdf
asdf"
...а не "asdf\\nasdf". Есть какая-нибудь функция для такого преобразования, чтобы не создавать велосипед?
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2012, 19:16
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

она?
<textarea></textarea>
<div></div>
<script>
var str = 'asdf\nasdf\nasdf\nasdf';
document.body.children[0].value = str;
document.body.children[1].innerHTML = str.replace(/\n/g, '<br>');
</script>

Последний раз редактировалось bes, 09.09.2012 в 19:19.
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2012, 19:21
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Неа, без использования доп элементов. Из безопасного разве что
alert(
  JSON.parse( 
    '"' + 
    prompt('str','asdf\\nasdf') 
    + '"'
  )
)

Или анализировать вручную.
Из опасного: eval и new Function.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2012, 19:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Сообщение от bes Посмотреть сообщение
она?
Не оно, ибо:
<textarea></textarea>
<div></div>
<script>
var str = 'asdf\\nasdf\\nasdf\\nasdf';
document.body.children[0].value = str;
document.body.children[1].innerHTML = str.replace(/\n/g, '<br>');
</script>
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2012, 19:54
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

alert(prompt('', 'asdf\\nadsf\\nasdf\\nadsf').replace(/\\n/g, '\n'));
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2012, 22:03
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Сообщение от bes Посмотреть сообщение
alert(prompt('', 'asdf\\nadsf\\nasdf\\nadsf').replace(/\\n/g, '\n'));
Это частный случай:
Сообщение от Zlyden Посмотреть сообщение
\n, \r, и другие спецсимволы
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2012, 23:07
Интересующийся
Отправить личное сообщение для Zlyden Посмотреть профиль Найти все сообщения от Zlyden
 
Регистрация: 27.10.2010
Сообщений: 19

Aetae,
Спасибо за первый пример. Правда, у него лишнее сообщение выводится, так что я сделал небезопасно:
var re = new RegExp(document.getElementById("regex").value, demoGetOpts());
var replacewith;
eval('replacewith = "'+ document.getElementById("replacement").value.replace('"','\\"') + '"');
document.getElementById("result").value = 
	document.getElementById("subject").value.replace(re, 
		replacewith);

bes,
Спасибо, но это уже "создавать велосипед"

Последний раз редактировалось Zlyden, 12.09.2012 в 23:28.
Ответить с цитированием
  #8 (permalink)  
Старый 13.09.2012, 00:07
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Сообщение от Zlyden Посмотреть сообщение
Правда, у него лишнее сообщение выводится,
Если вы не можите убрать вывод сообщения, значит в js вы понимаете меньше нуля. Срочно читайте любой учебник для начинающих или далеко не уедите.


<input type="" id="replacement" value='\\\"; alert("хa-хa, было ваше стало наше");"'/>

<script type="text/javascript">
var replacewith;
eval('replacewith = "'+ document.getElementById("replacement").value.replace('"','\\"') + '"');
</script>
__________________
29375, 35

Последний раз редактировалось Aetae, 13.09.2012 в 00:16.
Ответить с цитированием
  #9 (permalink)  
Старый 13.09.2012, 01:28
Интересующийся
Отправить личное сообщение для Zlyden Посмотреть профиль Найти все сообщения от Zlyden
 
Регистрация: 27.10.2010
Сообщений: 19

<input type="" id="replacement" value='\\\"; alert("хa-хa, было ваше стало наше");"'/>

<script type="text/javascript">
var replacewith;
eval('replacewith = "'+ document.getElementById("replacement").value.replace(/([^\\]|^)((?:\\\\)*)"/g,'$1$2\\"') + '"');
</script>

Может, я не очень разбираюсь в javascript, но я умею писать регулярные выражения
Ответить с цитированием
  #10 (permalink)  
Старый 14.09.2012, 16:26
Интересующийся
Отправить личное сообщение для Zlyden Посмотреть профиль Найти все сообщения от Zlyden
 
Регистрация: 27.10.2010
Сообщений: 19

Кстати, именно скрипты для проверки регулярных выражений я и писал. Часто нужно их проверять, да и большие тексты мне нередко нужно ими обрабатывать. Выложу готовую страницу для тестов, может, кому пригодится.
Вложения:
Тип файла: zip JS RegExp.zip (2.3 Кб, 9 просмотров)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение массива из адресной строки Xalyavbich Общие вопросы Javascript 0 27.06.2012 15:56
Перенос строки по указанному количеству символов kilogram Серверные языки и технологии 15 18.04.2012 02:27
автоматический перенос строки в textarea BorisBritva jQuery 5 02.03.2012 18:21
Выделение строки в таблице posta ExtJS 5 23.06.2011 12:31
Как убрать последний перенос строки? mff Общие вопросы Javascript 6 25.05.2010 17:08