87

为什么这个字符串没有在每个“\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"]
4

5 回答 5

187

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

于 2013-05-06T20:07:40.387 回答
42

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

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

.split("\n")

于 2013-05-06T20:12:18.093 回答
22

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

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

于 2014-07-24T04:12:05.880 回答
11

或正则表达式

.split(/\n/)
于 2016-07-22T18:58:24.420 回答
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")
于 2013-05-06T20:07:46.370 回答