Ruby 如何在不使用内置函数的情况下转换字符串
我试图在不使用内置函数的情况下交换字符串,如Ruby 如何在不使用内置函数的情况下转换字符串,ruby,Ruby,我试图在不使用内置函数的情况下交换字符串,如swapcase 我想出了以下代码: a = gets.split b = "" for i in a if /[[:upper:]]/.match(i) b += i.downcase end if /[[:lower:]]/.match(i) b += i.upcase end end puts b 但它产生了错误的输出。如何在Ruby中实现它?一种无参数模拟swapcase的方法 p 'Hello'.chars.
swapcase
我想出了以下代码:
a = gets.split
b = ""
for i in a
if /[[:upper:]]/.match(i)
b += i.downcase
end
if /[[:lower:]]/.match(i)
b += i.upcase
end
end
puts b
但它产生了错误的输出。如何在Ruby中实现它?一种无参数模拟swapcase的方法
p 'Hello'.chars.map { |c| c.upcase == c ? c.downcase : c.upcase }.join
#=> "hELLO"
与@sagarpandya82的答案类似,但不会将字符串转换为数组并返回
"ComMMent maintEnaNt, vaChe tacHetée?".gsub(/./) do |c|
c == c.upcase ? c.downcase : c.upcase
end
#=> "cOMmmENT MAINTeNAnT, VAcHE TAChETÉE?"
顺便说一下,您的代码使用了不少于7种不同的内置方法。
"ComMMent maintEnaNt, vaChe tacHetée?".gsub(/./) do |c|
c == c.upcase ? c.downcase : c.upcase
end
#=> "cOMmmENT MAINTeNAnT, VAcHE TAChETÉE?"