2012-02-02 125 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

相关问题