2012-02-02 3 views
6

я использую следующее регулярное выражение, чтобы сделать Newlines
теги:Regex раздеться г и п или г п

str.gsub("\r\n", '<br>') 

Это прекрасно работает на рабочем столе. на тексте iphone только \ n, он не имеет \ r.

Как я могу создать поддержку регулярных выражений? \ r \ n или просто \ n?

Благодаря

+1

Я не знаю Ruby, но стандартная вещь - str.gsub ("\ r? \ N", '
'). Попробуй. – Cheery

+0

Спасибо, пробовал, но это не сработало. str = str.gsub ("\ r? \ n", '
') ничего не было с тегом br – AnApprentice

ответ

8

\r\n|\r|\n

Это регулярное выражение также позволяет поддерживать компьютеры Mac, которые используют \r в одиночку, как строка заканчивается. Поскольку регулярные выражения являются жадными, они будут соответствовать \r\n, а не отдельным, если это возможно.

+0

Это не сработало? str = str.gsub («\ r \ n | \ r | \ n», '
') – AnApprentice

+0

Я получил его с любовью с .., но теперь у него есть 2 BRs. Я только хочу? str = str.gsub (/ \ r \ n | \ r | \ n /, '
') – AnApprentice

+0

Хм, это странно. Ну, может быть, будет более надежным, если вы сначала вызовете замену на '\ r \ n', а затем снова вызовите его с помощью' \ r \ \ n', чтобы избежать путаницы в регулярном выражении. –

1

оператор ? будет принимать 0 или один из предшествующего элемента так \r?\n должен принимать \r or \n or \r\n

+0

Это не сработало. теперь не совпадают? str = str.gsub ("\ r? \ n", '
') – AnApprentice

+0

The? должен идти после \ n. В этом случае он должен идти после срока, который он квалифицирует/ограничивает. Как бы то ни было, он квалифицирует «\ r». Это работает для меня: 'str = str.gsub (/ \ r (\ n)? /, '
')' – aenw

12

Я думаю

str.gsub(/\r?\n/, '<br>') 

должны сделать работу

+0

Спасибо, но это не сработало: str = str.gsub ("/ \ r? \ N /", '
') – AnApprentice

+1

@AnApprentice вы написали его с круглыми скобками, а регулярное выражение должно быть без них - я просто проверил синтаксис Ruby – Cheery

+1

Не используйте двойную кавычку (") для первого параметра. – barley

0

\r?\n|\r

\r?\n будет соответствовать \n или \r\n.

\r будет соответствовать только \r.

Это должно работать для Windows \ Mac \ Linux EOL.

1

Это, вероятно, самый простой способ:

str.gsub(/\R/, '<br>') 

/\R/ работа для Mac/Linux/Windows и включает в себя более экзотические юникодах символов новой строки.

+1

Приятное спасибо! Также легче запомнить и более надежный. –

Смежные вопросы