Programing

모든 공백을 밑줄로 안전하게 루비로 바꾸는 방법은 무엇입니까?

lottogame 2020. 11. 13. 07:40
반응형

모든 공백을 밑줄로 안전하게 루비로 바꾸는 방법은 무엇입니까?


이것은 공백이있는 모든 문자열에서 작동합니다.

str.downcase.tr!(" ", "_")

그러나 공백이없는 문자열은 삭제됩니다.

그래서 "New School"은 "new_school"로 변경되지만 "color"는 ""가됩니다. 아무것도 아닙니다!


tr에 대한 문서 ! 말하다

String # tr과 동일한 규칙을 사용하여 str을 제자리에서 변환합니다. 변경 사항이 없으면 str 또는 nil을 반환합니다.

느낌표없이 tr 을 사용하면 정확한 결과를 얻을 수 있다고 생각합니다 .


공간

str = "New School"
str.parameterize.underscore

=> "new_school"

공간없이

str = "school"
str.parameterize.underscore

=> "school"

편집 :-또한 매개 변수화 할 매개 변수로 '_'를 전달할 수 있습니다.

공간

str = "New School"
str.parameterize('_')

=> "new_school"

공간없이

str = "school"
str.parameterize('_')

=> "school"

snake case 에서 문자열을 얻는 데 관심이 있다면 , 연결된 밑줄과 시작 / 뒤에 밑줄이 나타날 수 있으므로 제안 된 솔루션이 제대로 작동하지 않습니다.

예를 들면

1.9.3-p0 :010 > str= "  John   Smith Beer "
  => "  John   Smith Beer " 
1.9.3-p0 :011 > str.downcase.tr(" ", "_")
  => "__john___smith_beer_"

이 솔루션은 더 잘 작동합니다.

1.9.3-p0 :010 > str= "  John   Smith Beer "
  => "  John   Smith Beer " 
1.9.3-p0 :012 > str.squish.downcase.tr(" ","_")
  => "john_smith_beer" 

squish는 Rails에서 제공하는 String 메서드입니다.


레일 5 이상을 사용하는 경우 다음과 같은 작업을 수행 할 수 있습니다.

str.parameterize(separator: '_')

오래된 질문이지만 ...

들어 모든 공백 당신은 아마 이런 식으로 뭔가 더 원하는 :

"hey\t there   world".gsub(/\s+/, '_') # hey_there_world

이것은 탭과 새 줄뿐만 아니라 공백을 가져오고 단일 _.

정규식은 필요에 맞게 수정할 수 있습니다. 예 :

"hey\t there   world".gsub(/\s/, '_') # hey__there___world

str.downcase.tr(" ", "_")

참고 : "!"


str = "Foo Bar"
str.tr(' ','').underscore

=> "foo_bar"

str.gsub ( "", "_")도 할 수 있습니다.

참고URL : https://stackoverflow.com/questions/7547065/how-to-safely-replace-all-whitespaces-with-underscores-with-ruby

반응형