2017-10-08 9 views
-3

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でどうすればいいですか?

+0

ちなみに、あなたのコードは7種類以上の組み込みメソッドを使用しています。 –

答えて

1

引数なしのスワップケースを模倣するアプローチの1つです。

p 'Hello'.chars.map { |c| c.upcase == c ? c.downcase : c.upcase }.join 
#=> "hELLO" 
1
"Hello World!".tr("a-zA-Z", "A-Za-z") 
# => "hELLO wORLD!" 
+2

これはASCIIでのみ有効です。 –

1
@ sagarpandya82の答えに似

が、配列や背中に文字列を変換しません。

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