문제

루비에 끈이 있습니다. 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에 열어보십시오. 라인 엔딩을 고치려면 다른 곳에서 열린 프로젝트 중 하나에서 이전에 물었습니다. 메뉴 옵션도있을 수 있다고 생각하지만, 그것이 내가 시도 할 첫 번째 일이 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top