【发布时间】:2014-04-23 12:33:35
【问题描述】:
我正在尝试编写一个函数,将字符串显示为交替大小写字母。
例如:
str= "My name is ballouta!"
==> My NaMe Is BaLlOuTa!
我的代码是:
def alt_case
flag = 0
str = ''
self.scan(/./) do |b|
if flag == 0
b.upcase ;
flag = 1
str = str + b
else
b.downcase
flag = 0
str = str + b
end #end if
end #end do
str
end #end method
此代码仅以小写形式返回字符串。
【问题讨论】:
-
你想要
b.upcase!和b.downcase!,而不是b.upcase和b.downcase。 -
你应该编辑把
class String放在开头,end放在最后。在将!(“bang”)添加到upcase和downcase之后,您的代码将可以工作,但它可以变得更像Ruby 并进行了相当大的改进。 -
"My name is ballouta!".chars.map.with_index { |ch,i| i.even? ? ch.upcase : ch }.join # => "My nAmE Is bAlLoUtA!"如果替换中包含空格
标签: ruby if-statement methods