2012-12-11 51 views
6

我有一个ruby文件,它读取文件并使用split(' ')将文本拆分成数组。问题是这些文本文件包含换行符,我想保留这些换行符。例如,如果我运行下面的代码按空格拆分字符串,但保留 n - Ruby

"Lorem ipsum\ndolor sit amet".split(' ') 

我得到的

["Lorem", "ipsum", "dolor", "sit", "amet"] 

输出为什么拆分删除换行符?我如何在我的阵列中保留\n

+3

使用'”“'(字符串用一个空格)是特殊的,可能从Perl的根源。这个“魔术”*应该包含在文档中 - 所以请先在那里咨询。请注意特殊性质是* string *'“”',而不是*正则表达式*'/ + /'。 – 2012-12-11 02:27:15

+7

_如果pattern是一个单独的空格,那么str将被分割为空格,前导空格和忽略连续空白字符的运行._ http://www.ruby-doc.org/core-1.9.3/String.html#method- i-split –

+0

@pst - 谢谢!这解决了它。 – fbonetti

回答

12

Michael Berkowski对你的问题的评论是正确的。

如果要解决这种情况下,使用正则表达式:

"Lorem ipsum\ndolor sit amet".split(/ /) 
#=> ["Lorem", "ipsum\ndolor", "sit", "amet"] 
+0

你知道它为什么用'/ /'而不用'/ \ s /'吗? – oldergod

+5

@oldergod'\ s'等价于'[\ t \ r \ n \ f]'。 – halfelf

+0

@halfelf我明白了,谢谢! – oldergod

相关问题