Ruby 문자열에서 "\ n"문자열을 제거하려면 어떻게해야합니까?


115

이 문자열이 있습니다.

"some text\nandsomemore"

여기서 "\ n"을 제거해야합니다. 난 노력 했어

"some text\nandsomemore".gsub('\n','')

하지만 작동하지 않습니다. 어떻게하나요? 읽어 주셔서 감사합니다.

답변:


172

gsub에서 사용할 필요가 "\n"없습니다 '\n'. 다른 따옴표는 다르게 작동합니다.

큰 따옴표 "는 문자 확장 및 표현식 보간을 허용합니다. 이스케이프 된 제어 문자를 사용하여 \n실제 값 (이 경우에는 newline )을 사용할 수 있도록하고 #{expression}변수를 사용할 수 있도록 허용 하고 텍스트에 원하는 거의 모든 루비 표현식을 사용할 수 있습니다.

반면에 작은 따옴표 '는 문자열을 문자 그대로 취급하므로 확장, 대체, 보간 또는 무엇을 가지고 있는지가 없습니다.

이 특별한 경우에는 .delete또는 .trString 메서드를 사용하여 개행 문자 를 삭제하는 것이 좋습니다.

자세한 정보는 여기를 참조하십시오


17
올바른 구문은 정말 (/ \ n /, "") .gsub 것
boulder_ruby

2
@David가 맞습니다. 그러나이 시점에서 Ben에게 도움이 될 것이기 때문에 인용문이 차이를 만든다는 것을 보여주는 것이 중요하다고 느꼈습니다. 당신을 염두에 두세요, 데이비드, 그것은 아마도 "올바른"것보다 스타일의 문제 일 것입니다. 개인적으로 저는 tr이 작업에 더 나은 선택 이라고 생각 하지만 제가 말했듯이 대답 할 때 작은 따옴표와 큰 따옴표의 차이점을 지적하는 것이 더 낫다고 생각했습니다.
ocodo

60

문자열을 교체하는 대신 제거하려는 경우 사용할 수 있습니다 String#delete(또는 그에 상응하는 mutator String#delete!). 예 :

x = "foo\nfoo"
x.delete!("\n")

x 이제 "foofoo"와 같습니다.

이 특정 경우 에는 실제로 문자열을 아무것도 바꾸지 않기 때문에 String#delete더 읽기 gsub쉽습니다.


3
적어도 Ruby 1.9.3에서는 delete여기에 표시된 것처럼 파괴적이지 않습니다. 새 문자열을 반환합니다.
Brent Dillingham

잘 발견되었습니다. 뮤 테이터 버전 String # delete를 사용하도록 해당 코드 스 니펫을 업데이트했습니다! 보다는 문자열 # 삭제
폴 리더

56

문자열에서 모든 선행 및 후행 공백을 제거하고 싶지 않거나 마음에 들지 않으면 strip메서드를 사용할 수 있습니다 .

"    hello    ".strip   #=> "hello"   
"\tgoodbye\r\n".strip   #=> "goodbye"

여기에 언급 된대로 .

편집 이 질문의 원래 제목이 달랐습니다. 내 대답은 원래 질문에 대한 것입니다.


2
이것은 질문에 대한 답이 아닙니다. strip선행 및 후행 공백 만 제거 : ruby-doc.org/core-1.9.3/String.html#method-i-strip-21
thelostspore

1
@mvdanj 예,이 특정 질문의 세부 사항을 감안할 때 답변은 없지만 제목에 따라 질문에 답변합니다. 그래서 사람들이 유용하다고 생각합니다.
ThomasW

원래 대답했을 때와 제목이 바뀌 었습니다.
ThomasW 2015 년

29

이를 위해 정규식이 필요하지 않습니다. tr 사용 :

"some text\nandsomemore".tr("\n","")

tr과 교체의 차이점은 무엇입니까?
Arnold Roa 2018

replace변수 할당과 같이 문자열을 새 문자열로 변경합니다. 반면 tr문자 별 전역 찾기 및 바꾸기입니다.
Mark Thomas

19

Ruby에서 사용 chomp또는 strip기능 :

"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"

2
이것은 질문에 대한 답이 아닙니다. strip선행 및 후행 공백 만 제거 -ruby-doc.org/core-1.9.3/String.html#method-i-strip-21
thelostspore

2
씹는이 너무 적게 upvotes있다 믿을 수 없어 ... 가장 좋은 방법입니다
user1735921을

chomp 메서드에서 \ n 및 \ r은 중간이 아닌 str의 끝에서 제거됩니다. 이 영업 문제가 해결되지 않습니다 그래서
silva96

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