2012-12-28 3 views
2

3 개의 연속 된 줄 바꿈 ("\n\n\n")으로 문자열을 분할하려고합니다. str.split('\n\n\n')을 시도했지만 작동하지 않았지만 str.split("\n\n\n")으로 변경하면 작동하기 시작했습니다. 왜 그런 행동이 일어나는가?작은 따옴표와 큰 따옴표

답변

8

작은 따옴표로 묶인 문자열은 문자열입니다. 따라서 '\n\n\n'은 3 개의 백 슬래시이고 3 개는 n이며 3 줄 넘지는 아닙니다. 큰 따옴표 문자열 만 올바르게 이스케이프 처리 할 수 ​​있습니다. 단일 인용 문자열 리터럴에서

puts 'abc\nabc' # => abc\nabc 
puts "abc\nabc" # => abc 
       # abc 
0

슬래시

'\n' == '\\n' 
4

단일 인용 문자열이 실제/문자 내용, 예를 들어, 두 배로 할 필요는 없다

1.9.3-p194 :003 > puts 'Hi\nThere' 
Hi\nThere 
=> nil 

반면 이중 인용 된 문자열 특수 문자 '보간'(\ n)도와 줄 바꿈을, 예를 들어,

1.9.3-p194 :004 > puts "Hi\nThere" 
Hi 
There 
=> nil 
1.9.3-p194 :005 > 

모범 사례 권장 사항 : (보간의 필요에 따라 큰 따옴표를 사용) 가능하면

  • 따옴표를 통해 작은 따옴표를 선택합니다.
  • '내 인용어'따옴표를 '어딘가에'따옴표로 붙이면