| 
	| 
	
	| 
		
	| 
			
			 
			
				09.09.2012, 18:54
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 27.10.2010 
						Сообщений: 19
					 
		
 |  |  
	| 
				Преобразование \n в перенос строки
			 Пользователь вводит строку в поле ввода, содержащую последовательности \n, \r, и другие спецсимволы в виде текста. Надо, чтобы перед обработкой все последовательности заменялись на спецсимволы. К примеру, ввёл юзер "asdf\nasdf", и это воспринималось именно как "asdf
 asdf"
 ...а не "asdf\\nasdf". Есть какая-нибудь функция для такого преобразования, чтобы не создавать велосипед?
 |  |  
	| 
		
	| 
			
			 
			
				09.09.2012, 19:16
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 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.
 |  |  
	| 
		
	| 
			
			 
			
				09.09.2012, 19:21
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| Неа, без использования доп элементов. Из безопасного разве что  
alert(
  JSON.parse( 
    '"' + 
    prompt('str','asdf\\nasdf') 
    + '"'
  )
)
Или анализировать вручную. 
Из опасного: eval и new Function.
				__________________ 29375, 35
 |  |  
	| 
		
	| 
			
			 
			
				09.09.2012, 19:23
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| 
	
 
	| Сообщение от 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
 |  |  
	| 
		
	| 
			
			 
			
				09.09.2012, 19:54
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 22.03.2012 
						Сообщений: 3,744
					 
		
 |  |  
	| 
alert(prompt('', 'asdf\\nadsf\\nasdf\\nadsf').replace(/\\n/g, '\n'));
 |  |  
	| 
		
	| 
			
			 
			
				09.09.2012, 22:03
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| 
	
 
	| Сообщение от bes   |  
	| 
alert(prompt('', 'asdf\\nadsf\\nasdf\\nadsf').replace(/\\n/g, '\n'));
 |  
	
 Это частный случай:
 
	
 
	| Сообщение от Zlyden   |  
	| \n, \r, и другие спецсимволы |  
	
				__________________ 29375, 35
 |  |  
	| 
		
	| 
			
			 
			
				12.09.2012, 23:07
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 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.
 |  |  
	| 
		
	| 
			
			 
			
				13.09.2012, 00:07
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| 
	
 
	| Сообщение от 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.
 |  |  
	| 
		
	| 
			
			 
			
				13.09.2012, 01:28
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 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, но я умею писать регулярные выражения |  |  
	| 
		
	| 
			
			 
			
				14.09.2012, 16:26
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 27.10.2010 
						Сообщений: 19
					 
		
 |  |  
	| Кстати, именно скрипты для проверки регулярных выражений я и писал. Часто нужно их проверять, да и большие тексты мне нередко нужно ими обрабатывать. Выложу готовую страницу для тестов, может, кому пригодится. |  |  
 
 
 
 |  |