2016-09-06 7 views
1

をdowncaseこの1以上のサブストリングをdowncaseするが、より適切な方法です?:Rubyのサブストリングが

string[a..b] = string[a..b].downcase 

たぶん、このような何か:たとえば

string[a..b].downcase! 

string = "RubyChangedMyMind" 

string[1..string.length] = string[1..string.length].downcase 
# this is working but i want to know if there is more short way to do this 
# (indeces may be different) 
# something like string[a..b].downcase! 
+0

それはあなたが達成したいものは不明です。あなたはサンプルの文字列を表示することができますし、結果をどのようにしたいですか?これは期待されることをしているようです。 – vgoff

+0

好きなものの例を表示できますか? – Dschoni

+0

['String#[]'](http://ruby-doc.org/core-2.3.1/String.html#method-i-5B-5D)は常に_new_文字列(または 'nil')を返します。したがって、その文字列を変更しても元の文字列には影響しません。あなたのユースケースに応じて、 'sub!'と正規表現を使うことができます。 – Stefan

答えて

0

ますproc:

my_downcase = Proc.new { |str,n,m| str.chars.each_with_index.map{ |c,index| (n..m).include?(index) ? c.downcase : c }.join} 

、あなたはいつでもそれを呼び出す:

my_downcase.call(string,range_from,range_to) 

例えば:

string = "dsadaDAdasdsadDADADadsadADD" 
new_string = my_downcase.call(string,0,11) 
#=> "dsadadadasdsadDADADadsadADD" 
+0

素敵なアイデアをありがとう! –