এমন কোনও প্রস্তুত কার্য আছে যা উটের ক্ষেত্রে স্ট্রিংসকে আন্ডারস্কোর দ্বারা পৃথক স্ট্রিংয়ে রূপান্তর করে?
আমি এরকম কিছু চাই:
"CamelCaseString".to_underscore
"উট_সেস_ স্ট্রিং" ফিরতে
...
এমন কোনও প্রস্তুত কার্য আছে যা উটের ক্ষেত্রে স্ট্রিংসকে আন্ডারস্কোর দ্বারা পৃথক স্ট্রিংয়ে রূপান্তর করে?
আমি এরকম কিছু চাই:
"CamelCaseString".to_underscore
"উট_সেস_ স্ট্রিং" ফিরতে
...
উত্তর:
রেলগুলির অ্যাক্টিভসপোর্টটি নিম্নলিখিতটি ব্যবহার করে স্ট্রিংয়ের আন্ডারস্কোর যুক্ত করেছে:
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("- ","_")
(প্রথম PARAM যোগ করা স্থান), এটি আন্ডারস্কোর মধ্যে শূণ্যস্থান চালু হবে। এছাড়াও, আমি মনে করি না যে আপনাকে অন্তর্ভুক্ত করা দরকার self.
, বা কমপক্ষে এটি আমার জন্য রুবি ১.৯.৩ এর অধীনে কাজ করে।
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/ স্ট্রিং#snake_ کیس-ইনস্ট্যান্স_মোথডো
এটি ডেটা ম্যাপার এবং মার্বের জন্য সমর্থন লাইব্রেরি। ( 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 #=> "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'
অন্যথায় বদলাতে হবে অন্যথায় আপনি রুবি 2.5 এর "came\u0001_\u0002ase"
পরিবর্তে শেষ করবেন "camel_case"
... সম্ভবত অন্যরাও।