루비에서 문자열을 기호 가능으로 변환
기호는 일반적으로 다음과 같이 표시됩니다
:book_author_title
그러나 문자열이 있으면 :
"Book Author Title"
레일 / 루비에 :
원시 문자열 정규식 바꾸기를하지 않고 표기법을 사용할 수있는 기호로 변환하는 방법이 있습니까?
Rails ActiveSupport::CoreExtensions::String::Inflections
는 그러한 방법을 제공하는 모듈을 가지고 있습니다. 그들은 모두 볼 가치가 있습니다. 예를 들어 :
'Book Author Title'.parameterize.underscore.to_sym # :book_author_title
에서 : http://ruby-doc.org/core/classes/String.html#M000809
str.intern => symbol
str.to_sym => symbol
에 해당하는 Symbol을 반환하여 str
이전에 존재하지 않은 심볼을 만듭니다. 참조하십시오 Symbol#id2name
.
"Koala".intern #=> :Koala
s = 'cat'.to_sym #=> :cat
s == :cat #=> true
s = '@cat'.to_sym #=> :@cat
s == :@cat #=> true
또한 :xxx
표기법 으로 표현할 수없는 기호를 만드는 데 사용할 수도 있습니다 .
'cat and dog'.to_sym #=> :"cat and dog"
그러나 귀하의 예를 들어 ...
"Book Author Title".gsub(/\s+/, "_").downcase.to_sym
가야한다;)
"Book Author Title".parameterize('_').to_sym
=> :book_author_title
http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
parameterize는 레일 방법이며, 구분 기호를 원하는 항목을 선택할 수 있습니다. 기본적으로 대시 "-"입니다.
intern → symbol str에 해당하는 Symbol을 반환하여 이전에 존재하지 않은 경우 심볼을 만듭니다.
"edition".intern # :edition
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
Rails에서는 다음 underscore
방법을 사용하여이를 수행 할 수 있습니다 .
"Book Author Title".delete(' ').underscore.to_sym
=> :book_author_title
더 간단한 코드는 정규식을 사용하고 있습니다 (Ruby에서 작동).
"Book Author Title".downcase.gsub(/\s+/, "_").to_sym
=> :book_author_title
이것이 당신이 찾고있는 것입니까? :
:"Book Author Title"
:)
이것은 질문 자체에 답하지는 않지만이 질문은 문자열을 기호로 변환하고 해시에서 사용하는 솔루션을 검색하는 것을 발견했습니다.
hsh = Hash.new
str_to_symbol = "Book Author Title".downcase.gsub(/\s+/, "_").to_sym
hsh[str_to_symbol] = 10
p hsh
# => {book_author_title: 10}
그것이 나와 같은 누군가를 돕기를 바랍니다!
참고 URL : https://stackoverflow.com/questions/2004491/convert-string-to-symbol-able-in-ruby
'IT story' 카테고리의 다른 글
HTML + CSS : div 내용을 한 줄에 유지하는 방법은 무엇입니까? (0) | 2020.04.19 |
---|---|
숭고한 텍스트에서 공백 들여 쓰기를 수정 / 변환하는 방법? (0) | 2020.04.19 |
Swift와 함께 isKindOfClass 사용 (0) | 2020.04.19 |
npm 설치 오류-MSB3428 : Visual C ++ 구성 요소“VCBuild.exe”를로드 할 수 없습니다 (0) | 2020.04.19 |
Javascript에서 하루를 시작하고 끝내는 방법? (0) | 2020.04.19 |