문제
루비에 끈이 있습니다. s
표준 라인 엔딩을 가질 수있는 (\n
, \r\n
, \r
). 나는 그 모든 것을 변환하고 싶습니다 \n
에스. 가장 좋은 방법은 무엇입니까?
이것은 초고속 문제처럼 보이지만 그것에 대한 문서는별로 많지 않습니다. 분명히 쉬운 원유 솔루션이 있지만이를 처리하기 위해 내장 된 것이 있습니까?
우아하고 관용적 인 루비 솔루션이 가장 좋습니다.
편집 : 그것을 실현했습니다 ^M
그리고 \r
동일합니다. 그러나 여전히 세 가지 사례가 있습니다. (보다 위키 백과.)
해결책
가장 좋은 것은 구체적으로 변경하려는 두 가지 사례를 처리하고 너무 영리 해지려고하지 않는 것입니다.
s.gsub /\r\n?/, "\n"
다른 팁
루비 1.9 이후로 사용할 수 있습니다 String::encode
~와 함께 universal_newline: true
새로운 라인을 모두 얻으려면 \n
인코딩을 변경하지 않은 상태에서
s.encode(s.encoding, universal_newline: true)
알려진 Newline 상태에 있으면 CRLF로 자유롭게 전환 할 수 있습니다. :crlf_newline
. EG : 알려지지 않은 (아마도 혼합 된) 파일을 CRLF
(예를 들어), 이진 모드로 읽으십시오.
s.encode(s.encoding, universal_newline: true).encode(s.encoding, crlf_newline: true)
가장 깨끗한 해결책은 정규 표현을 사용하는 것입니다.
s.gsub! /\r\n?/, "\n"
NetBeans IDE에 열어보십시오. 라인 엔딩을 고치려면 다른 곳에서 열린 프로젝트 중 하나에서 이전에 물었습니다. 메뉴 옵션도있을 수 있다고 생각하지만, 그것이 내가 시도 할 첫 번째 일이 될 것입니다.
제휴하지 않습니다 StackOverflow