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?"