如何在不使用内置函数的情况下交换字符串

时间:2017-10-08 15:15:37

标签: 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中做到这一点?

4 个答案:

答案 0 :(得分:1)

模仿没有参数的swapcase的一种方法。

p 'Hello'.chars.map { |c| c.upcase == c ? c.downcase : c.upcase }.join
 #=> "hELLO"

答案 1 :(得分:1)

"Hello World!".tr("a-zA-Z", "A-Za-z")
# => "hELLO wORLD!"

答案 2 :(得分:1)

与@ sagarpandya82的答案类似,但不会将字符串转换为数组并返回。

"ComMMent maintEnaNt, vaChe tacHetée?".gsub(/./) do |c|
  c == c.upcase ? c.downcase : c.upcase
end
  #=> "cOMmmENT MAINTeNAnT, VAcHE TAChETÉE?"

答案 3 :(得分:0)

Session::get()