2012-02-02 126 views
6

我用下面的正則表達式來使換行符
標籤:正則表達式剝離 r和 n或 r n

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

能正常工作在桌面上。 iPhone上的文字只有\ n,它沒有\ r。

我怎樣才能讓正則表達式支持呢? \ r \ n或只是\ n?

感謝

+1

我不知道Ruby,但標準的東西是str.gsub(「\ r?\ n」,'
')。嘗試一下。 – Cheery 2012-02-02 05:38:33

+0

謝謝,試過了,但沒有奏效。 str = str.gsub(「\ r?\ n」,'
')沒有一個br標記 – AnApprentice 2012-02-02 05:43:27

回答

8

\r\n|\r|\n

這正則表達式也會讓你支持Mac電腦,它使用\r單獨作爲一行結束。由於正則表達式很貪婪,如果可能的話,它們將匹配\r\n而不是單個的。

+0

那沒用? str = str.gsub(「\ r \ n | \ r | \ n」,'
') – AnApprentice 2012-02-02 05:41:47

+0

我知道它有點用於..但現在它有2個BR ..我只想要一個? str = str.gsub(/ \ r \ n | \ r | \ n /,'
') – AnApprentice 2012-02-02 05:44:52

+0

嗯,這很奇怪。那麼,如果你先用'\ r \ n'調用replace,那麼它可能會更可靠,然後再次用'\ r | \ n'調用它,以避免regex混淆。 – 2012-02-02 05:46:46

1

?運營商將接受0或前面的元素之一,所以\r?\n應該接受\r or \n or \r\n

+0

這沒有奏效。現在沒有匹配? str = str.gsub(「\ r?\ n」,'
') – AnApprentice 2012-02-02 05:41:11

+0

The?需要去追求\ n。在這種情況下,它應該在符合條件/限制的條件之後。實際上,它正在限定'\ r'。這適用於我:'str = str.gsub(/ \ r(\ n)?/,'
')' – aenw 2015-02-18 01:03:46

12

我覺得

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

應該做的工作

+0

謝謝,但沒有奏效:str = str.gsub(「/ \ r?\ n /」,'
') – AnApprentice 2012-02-02 05:42:21

+1

@AnApprentice你寫的括號和正則表達式應該沒有他們 - 我只是檢查Ruby – Cheery 2012-02-02 05:47:14

+1

不要對第一個參數使用雙引號(「) – barley 2012-02-02 05:48:24

0

\r?\n|\r

\r?\n將匹配\n\r\n

\r只會匹配\r

這應該適用於Windows \ Mac \ Linux EOL。

1

這可能是最簡單的方法:

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

/\R/作品爲Mac/Linux/Windows的,包括更多的外來unicode的換行符。

+1

非常感謝!也更容易記住和更強大。 – 2016-12-22 16:48:32

相關問題