拆分不同的换行符

Shp*_*ord 51 ruby regex split newline

现在我正在做一个split字符串,并假设用户的换行符是\r\n这样的:

string.split(/\r\n/)
Run Code Online (Sandbox Code Playgroud)

我想做的就是分裂\r\n或者只是分开\n.

那么正则表达式将如何拆分其中任何一个?

Nic*_*win 75

你试过/\r?\n/吗?将?使得\r可选.

用法示例:http://rubular.com/r/1ZuihD0YfF

  • @AndrewGrimm,为什么你认为用户不应该在他的文本中有`\ r``? (13认同)

23i*_*use 17

Ruby有方法String#each_lineString#lines

返回一个枚举:http: //www.ruby-doc.org/core-1.9.3/String.html#method-i-each_line

返回一个数组:http: //www.ruby-doc.org/core-2.1.2/String.html#method-i-lines

我没有针对你的场景测试它,但我敢打赌它会比手动选择换行符更好.


Phr*_*ogz 15

# Split on \r\n or just \n
string.split( /\r?\n/ )
Run Code Online (Sandbox Code Playgroud)

虽然它对这个问题没有帮助(你需要一个正则表达式),但请注意,String#split这不需要正则表达式参数.您的原始代码也可能是string.split( "\r\n" ).


Cla*_*ark 6

\n is for unix 
\r is for mac 
\r\n is for windows format
Run Code Online (Sandbox Code Playgroud)

为了操作系统的安全。我会做 /\r?\n|\r\n?/

"1\r2\n3\r\n4\n\n5\r\r6\r\n\r\n7".split(/\r?\n|\r\n?/)
=> ["1", "2", "3", "4", "", "5", "", "6", "", "7"]
Run Code Online (Sandbox Code Playgroud)