ruby .split('\ n')没有在新行上拆分

时间:2013-05-06 20:06:16

标签: ruby string

为什么这个字符串不会在每个“\ n”上拆分? (红宝石)

"ADVERTISING [7310]\n\t\tIRS NUMBER:\t\t\t\t061340408\n\t\tSTATE OF INCORPORATION:\t\t\tDE\n\t\tFISCAL YEAR END:\t\t\t0331\n\n\tFILING VALUES:\n\t\tFORM TYPE:\t\t10-Q\n\t\tSEC ACT:\t\t1934 Act\n\t".split('\n')
>> ["ADVERTISING [7310]\n\t\tIRS NUMBER:\t\t\t\t061340408\n\t\tSTATE OF INCORPORATION:\t\t\tDE\n\t\tFISCAL YEAR END:\t\t\t0331\n\n\tFILING VALUES:\n\t\tFORM TYPE:\t\t10-Q\n\t\tSEC ACT:\t\t1934 Act\n\t"]

5 个答案:

答案 0 :(得分:145)

您需要.split("\n")。正确解释新行需要字符串插值,双引号是一种方法。

答案 1 :(得分:37)

在Ruby中,单个字符串周围的引号表示不解释转义字符。与C不同,单引号表示单个字符。在这种情况下,'\n'实际上等同于"\\n"

因此,如果要拆分\n,则需要更改代码以使用双引号。

.split("\n")

答案 2 :(得分: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

我没有根据您的情况对其进行测试,但我敢打赌它会比手动选择换行符更好。

答案 3 :(得分:5)

或正则表达式

.split(/\n/)

答案 4 :(得分:3)

您不能使用单引号:

"ADVERTISING [7310]\n\t\tIRS NUMBER:\t\t\t\t061340408\n\t\tSTATE OF INCORPORATION:\t\t\tDE\n\t\tFISCAL YEAR END:\t\t\t0331\n\n\tFILING VALUES:\n\t\tFORM TYPE:\t\t10-Q\n\t\tSEC ACT:\t\t1934 Act\n\t".split("\n")