2012-02-02 2 views
6

は、私は改行
タグを作るために、次の正規表現を使用します。正規表現 rとをストリップにnまたは rを nは

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

を受け入れる必要があります0または先行する要素の1ので\r?\nを受け付けます行末。正規表現は貪欲であるため、できるだけ個々の正規表現とは対照的に\r\nと一致します。

+0

これはうまくいきませんでしたか? str = str.gsub( "\ r \ n | \ r | \ n"、 '
') – AnApprentice

+0

私はそれとちょっと仕事をしましたが、今は2人のBRしかいません。 str = str.gsub(/ \ r \ n | \ r | \ n/'
') – AnApprentice

+0

これは奇妙です。まあ、あなたが最初に '\ r \ n'で置き換えを呼び出すと、より信頼できるでしょう、正規表現の混乱を避けるために' \ r | \ n'でもう一度それを呼び出してください。 –

1

?オペレータは、として単独で\rを使用するか、正規表現はまた、あなたがMacをサポートできるようになること\r or \n or \r\n

+0

これはうまくいきませんでした。今は一致していませんか? str = str.gsub( "\ r?\ n"、 '
') – AnApprentice

+0

? \ nの後に行く必要があります。この場合、それは予選/制限と呼ばれる期間の後に行わなければならない。そのままで、それは '\ r'を予選しています。 'str = str.gsub(/ \ r(\ n)?/、 '
')' – aenw

12

私は

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

+0

ありがとうございましたが、うまくいきませんでした。str = str.gsub( "/ \ r?\ n /"、 '
') – AnApprentice

+1

@AnApprenticeあなたはカッコとregexpを使って書きました。 Ruby – Cheery

+1

最初のパラメータに二重引用符( ")を使用しないでください。 – barley

0

\r?\n|\r

\r?\nジョブが\n\r\nと一致しますやるべきだと思います。

\rは、ちょうど\rと一致します。

これはWindows \ Mac \ Linux EOLで動作するはずです。

1

これはおそらく最も簡単な方法です:Macの/ Linuxの/ Windows用

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

/\R/作品や、よりエキゾチックなUnicodeの改行が含まれています。

+1

よろしくお願いします!また、覚えやすく、より堅牢です。 –

関連する問題