क्या कोई रेडी फंक्शन है जो ऊंट केस स्ट्रिंग्स को अंडरस्कोर पृथक स्ट्रिंग में परिवर्तित करता है?
मुझे कुछ इस तरह चाहिए:
"CamelCaseString".to_underscore
"camel_case_string" वापस करने के लिए।
...
क्या कोई रेडी फंक्शन है जो ऊंट केस स्ट्रिंग्स को अंडरस्कोर पृथक स्ट्रिंग में परिवर्तित करता है?
मुझे कुछ इस तरह चाहिए:
"CamelCaseString".to_underscore
"camel_case_string" वापस करने के लिए।
...
जवाबों:
रेल्स 'ActiveSupport स्ट्रिंग का उपयोग करके अंडरस्कोर जोड़ता है:
class String
def underscore
self.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase
end
end
फिर आप मज़ेदार चीज़ें कर सकते हैं:
"CamelCase".underscore
=> "camel_case"
tr("-","_")
करने के लिए tr("- ","_")
(प्रथम परम को जोड़ा गया अंतरिक्ष), यह भी अंडरस्कोर में रिक्त स्थान हो जाएगा। इसके अलावा, मुझे नहीं लगता कि आपको इसे शामिल करने की आवश्यकता है self.
या कम से कम यह मेरे लिए रूबी 1.9.3 के तहत काम करता है।
require 'active_support/core_ext/string'
आप उपयोग कर सकते हैं
"CamelCasedName".tableize.singularize
या केवल
"CamelCasedName".underscore
दोनों विकल्प तरीके से उपज होगी "camel_cased_name"
। आप इसे यहाँ और अधिक विवरण देख सकते हैं ।
वन-लाइनर रूबी कार्यान्वयन:
class String
# ruby mutation methods have the expectation to return self if a mutation occurred, nil otherwise. (see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-gsub-21)
def to_underscore!
gsub!(/(.)([A-Z])/,'\1_\2')
downcase!
end
def to_underscore
dup.tap { |s| s.to_underscore! }
end
end
इसलिए "SomeCamelCase".to_underscore # =>"some_camel_case"
/([^A-Z])([A-Z]+)/
इसके बजाय विचार करना चाहते हैं , संभाल कर सकते हैं "ALLCAPS"
-> "allcaps"
इसके बजाय"a_ll_ca_ps"
एक रेल्स इनबिल्ट विधि है जिसे 'अंडरस्कोर' कहा जाता है जिसे आप इस उद्देश्य के लिए उपयोग कर सकते हैं
"CamelCaseString".underscore #=> "camel_case_string"
'अंडरस्कोर' पद्धति को आम तौर पर 'ऊंट' के उलटा माना जा सकता है
यहाँ है कि कैसे रेल करता है :
def underscore(camel_cased_word)
camel_cased_word.to_s.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase
end
रिसीवर सांप के मामले में परिवर्तित हो गया: http://rubydoc.info/gems/extlib/0.9.15/String#snake_case-instance_method
यह DataMapper और Merb के लिए सपोर्ट लाइब्रेरी है। ( http://rubygems.org/gems/extlib )
def snake_case
return downcase if match(/\A[A-Z]+\z/)
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
gsub(/([a-z])([A-Z])/, '\1_\2').
downcase
end
"FooBar".snake_case #=> "foo_bar"
"HeadlineCNNNews".snake_case #=> "headline_cnn_news"
"CNN".snake_case #=> "cnn"
की जाँच करें snakecase सेरूबी पहलुओं
निम्नलिखित मामलों को संभाला जाता है, जैसा कि नीचे देखा गया है:
"SnakeCase".snakecase #=> "snake_case"
"Snake-Case".snakecase #=> "snake_case"
"Snake Case".snakecase #=> "snake_case"
"Snake - Case".snakecase #=> "snake_case"
प्रेषक: https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
class String
# Underscore a string such that camelcase, dashes and spaces are
# replaced by underscores. This is the reverse of {#camelcase},
# albeit not an exact inverse.
#
# "SnakeCase".snakecase #=> "snake_case"
# "Snake-Case".snakecase #=> "snake_case"
# "Snake Case".snakecase #=> "snake_case"
# "Snake - Case".snakecase #=> "snake_case"
#
# Note, this method no longer converts `::` to `/`, in that case
# use the {#pathize} method instead.
def snakecase
#gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr('-', '_').
gsub(/\s/, '_').
gsub(/__+/, '_').
downcase
end
#
alias_method :underscore, :snakecase
# TODO: Add *separators to #snakecase, like camelcase.
end
"Dumb Penguin's Egg".snakecase # => "dumb_penguin's_egg"
जब आपके पास रिक्त स्थान होते हैं, तो कैमलकेस के लिए लघु ऑन्लाइनर (छोटे अक्षर के अक्षर के साथ आपके पास कोई शब्द नहीं है, तो सही तरीके से काम नहीं करता है):
a = "Test String"
a.gsub(' ', '').underscore
=> "test_string"
underscore
रूबी का हिस्सा नहीं है
किसी मामले में जब वह रिक्त स्थान के साथ स्ट्रिंग को अंडरस्कोर लगाने की आवश्यकता के मामले में देख रहा है और उन्हें अंडरस्कोर में बदलना चाहता है, तो आप इस तरह से कुछ का उपयोग कर सकते हैं
'your String will be converted To underscore'.parameterize.underscore
#your_string_will_be_converted_to_underscore
या बस .parameterize ('_') का उपयोग करें, लेकिन ध्यान रखें कि यह एक पदावनत है
'your String will be converted To underscore'.parameterize('_')
#your_string_will_be_converted_to_underscore
मुझे यह पसंद है:
class String
# \n returns the capture group of "n" index
def snikize
self.gsub(/::/, '/')
.gsub(/([a-z\d])([A-Z])/, "\1_\2")
.downcase
end
# or
def snikize
self.gsub(/::/, '/')
.gsub(/([a-z\d])([A-Z])/) do
"#{$1}_#{$2}"
end
.downcase
end
end
String
क्लास का बंदर पैच । ऐसे वर्ग हैं जो अपरकेस में दो या अधिक अक्षरों से शुरू होते हैं।
"\1_\2"
के लिए '\1_\2'
अन्यथा आप के साथ खत्म हो जाएगा "came\u0001_\u0002ase"
के बजाय "camel_case"
रूबी 2.5 के रूप में ... शायद साथ ही दूसरों।