ruby .split ( '\ n') 새 줄에서 분할되지 않음


82

이 문자열이 각 "\ 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"]

답변:


172

당신은 필요합니다 .split("\n"). 새 줄을 올바르게 해석하려면 문자열 보간이 필요하며 큰 따옴표는이를 수행하는 한 가지 방법입니다.


39

Ruby에서 문자열 주위의 작은 따옴표는 이스케이프 문자가 해석되지 않음을 의미합니다. 작은 따옴표가 단일 문자를 나타내는 C와 달리. 이 경우 '\n'실제로 "\\n".

따라서 분할 \n하려면 큰 따옴표를 사용하도록 코드를 변경해야합니다.

.split("\n")


22

루비에는 방법이 String#each_line있고String#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

귀하의 시나리오에 대해 테스트하지는 않았지만 개행 문자를 수동으로 선택하는 것보다 더 잘 작동 할 것이라고 확신합니다.


그러나 그것은 #lines개행 문자를 제거하지 않을 것이며, 동시에 #split그렇게 할 것입니다 : "a\nb".lines => ["a\n", "b"]while"a\nb".split("\n") => ["a", "b"]
tanius

또한 텍스트 모드 (기본값)로 읽은 파일의 경우 줄 바꿈 시퀀스가로 변환됩니다 "\n"( 참조 ). 따라서 수동으로 선택할 필요가 없습니다. "\n"여러 플랫폼에서 사용 합니다.
tanius


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")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.