2016-09-06 101 views
1

是否有downcase一个子比这个?:红宝石子downcase

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

感谢您的好主意! –