javascript: замена переносов строки на <br />. не выходит........

sni

Новичок
javascript: замена виндосовских переносов строки на <br />. не выходит........

существует строка s , необходимо заменить все символы виндового перевода строки на тэги
<br /> пробую так: "s=s.replace(/\r\n|\r|\n/g,"<br>");"
не пашет
s=s.replace("\r\n","<br>");"
тоже не работает. ни чег не заменяет...........

помогите, что может быть неправильно?
 

dimagolov

Новичок
про "s=s.replace(/\r\n|\r|\n/g,"<br>");" вопрос. какие варианты учитывает первый | ?
 

RoLex

Новичок
replace("/[\r\n]/","<br />");
а так?

-~{}~ 06.08.07 16:50:

только не понятно, зачем тебе яваскриптом менях их, когда их можно заменить при выводе не экран.
 

sni

Новичок
dimagolov /r - для макинтоша. /r/n для винды и /n для никсов
 

dimagolov

Новичок
sni, еще раз пробуем. Первый | в регулярке означает "совпадает с ххх или с yyy". Так вот, что в твоем выражении ххх, а что yyy?


RoLex, садись, два.
 

sni

Новичок
Автор оригинала: RoLex
replace("/[\r\n]/","<br />");
а так?

-~{}~ 06.08.07 16:50:

только не понятно, зачем тебе яваскриптом менях их, когда их можно заменить при выводе не экран.
неа. не работает.......

зачем? :
есть такая заморочка. текст сначала выводится строками (для предпросмотра краткого). тут как раз полезно что нет <br>. при нажатии на строку, скрипт должен заменять переносы строк на <br> и выводить в другой элемент - панель с развернутым текстом.

думаю может при копировании через js что-то теряется.......... хз....

-~{}~ 06.08.07 17:01:

проверил для теста:

s=s.replace("и","9999");

почему-то заменяет только первое вхождение текста.... странно. помоему должен заменять все??
 

dimagolov

Новичок
sni, ответь на мой последний вопрос, а то будешь тыкаться как котенок и даже если попадешь куда надо то не поймешь почему.

Автор оригинала: sni
s=s.replace("и","9999");

почему-то заменяет только первое вхождение текста.... странно. помоему должен заменять все??
с чего ты это взял?
 

sni

Новичок
dimagolov ок, по регулярке - я видел ее в нескольких примерах на сайтах: решил спереть. в теории она должна заменять выражения /p, или /n, или /p/n на "***"
 

dimagolov

Новичок
sni, твоя идея понятна из первого поста. я просил ответить что такое ххх, а что yyy и почему. Это очень сложно?
 

sni

Новичок
Автор оригинала: dimagolov
с чего ты это взял?
ок

1 js:
s=row.childNodes(1).childNodes(0).childNodes(0).innerHTML;
document.getElementById('textpreview').innerHTML= s;
_____________
на странице.
исходный текст:
тестовый или / и не очень текст. и прочие вещи...
элемент в который копируется текст:
тестовый или / и не очень текст. и прочие вещи...

2 js

s=row.childNodes(1).childNodes(0).childNodes(0).innerHTML;
s=s.replace("и","9999");
document.getElementById('textpreview').innerHTML= s;
_____________________
на странице.
исходный текст:
тестовый или / и не очень текст. и прочие вещи...
элемент в который копируется текст:
тестовый 9999ли / и не очень текст. и прочие вещи...

во как...

-~{}~ 06.08.07 17:19:

dimagolov к сожалению я тупо скопировал регулярку, не смотря( xxx наверно /r/n yyy - /r
 

dimagolov

Новичок
sni, ну так так и ДОЛЖНО БЫТЬ. с чего ты взял, что может быть по-другому?

короче, почитай, поиграйся - там интерактивный пример есть http://www.w3schools.com/jsref/jsref_replace.asp, раз думать не хочешь. я ж вопрос не из самодурства задал, а чтобы ты понял где твоя ошибка.
 

sni

Новичок
dimagolov да целую книжку про регулярки купил и прочитал. а вот практикой не подкрепил и успешно забыл через месяц(
 

RoLex

Новичок
Код:
<script>
			function nl2br(s1, s2)
			{
				str = document.getElementById(s1).value;				
				str = str.replace(/\r\n|\r|\n/g,"<br />");				
				document.getElementById(s2).value = str;
			}
		</script>
		<form>text1<br />

			<textarea id="txt1"></textarea>
		<br />text2<br />
			<textarea id="txt2"></textarea>
		<br />
		<input type="button" value="ok" onclick="javascript: nl2br('txt1', 'txt2');">
		</form>
проверил в IE 6 mozilla FF 1.5.0.6 opera 9.02 - везде работает

PS. dimagolov, и с [] работает, так что не надо....
 

sni

Новичок
dimagolov хорошо, понял методом тыка что /***/g означает замена всех вхождений.... а что с остальным выражением не так?
 

dimagolov

Новичок
RoLex, кстати да, я тоже слегка ступил. работает и так.

а вот про [\r\n] оно не работает так, как надо для виндового варианта ;)
 

RoLex

Новичок
кста, по той ссылке где можно протестить код, что Дима тут дал.
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_replace

там аналогичный вышеприведенный код тоже работает.
ЗЫ. с [] работает, но несовсем верно :) вставляет два раза <br/> (замечено в ИЕ и опера. так как находит \n два раза....)

-~{}~ 06.08.07 17:55:

ну я имел ввид что регулярка будет такого вида: [\r\n]|[\r]|[\n]

не все же писать за автора :)
 

sni

Новичок
по идее

s=s.replace(/\r\n/g,"=====");

уж точно должно работать... но нет -
может переносы строки как-то по другому хранятся там....... хз...
?



RoLex да, пример в пустом html работает . у меня почему-то нет....


вообще, вся цепочка педедачи строки такая : данные берутся из базы данных, через страницу на C#. ее мы вызываем и импортируем через js (frame.contentWindow.location.href = url;) , все это дело выводится на экран и при нажатии мышью текст должен копироваться в другую форму, с заменой переносов строки на <br> ..... может тут переносы как то по другому хранятся...
зх
 

dimagolov

Новичок
sni, если патерн /\r\n/g не работает, то это говорит только о том, что там виндовых переводов нету. а что говорит alert (s) ?


RoLex, [\r\n]|[\r]|[\n] НИЧЕМ от [\r\n] не отличается. объяснять почему надо?
 
Сверху