使用Ruby和puts格式化问题

时间:2011-06-18 21:29:00

标签: ruby

当我们年轻的时候,我的朋友和我有自己的秘密语言。最近他挑战我做一个翻译,这样我就可以输入一个单词,然后把它转换成正确的单词。这很愚蠢,但它只是为了好玩。

我遇到的问题是转换后的字输出是在不同的行上。

应该做什么:

要翻译的词语:Banana

翻译过的词:ananabang

它的作用:

要翻译的词语:Banana

翻译的字:

阿纳纳

这是我写的代码。

puts "Enter word to translate \n \n"    
input = gets
firstCharacter = input[0].chr 
ang = "ang"

if firstCharacter =~ /\A(a|b|c|d|A|B|C|D)\Z/
        input.slice!(0)
        puts firstCharacter + input + "ang" 
end

我想知道是否有人可以帮我解决输出问题..?

由于

编辑:使用gets.chomp修复此问题。

2 个答案:

答案 0 :(得分:4)

gets返回输入的字符串,并在结尾处添加换行符。如果您将第二行更改为input = gets.chomp,它将按预期工作,因为chomp会删除尾随换行符。

答案 1 :(得分:1)

您还可以将代码重构为更简洁明了的内容:

print "Enter word to translate: "
word = gets.chomp.downcase
puts word.sub(/^(.)/, '') << "#{$1}ang"

或者稍微冗长一点:

print "Enter word to translate: "
word = gets.chomp.downcase
translation = word[1,1000] << word[0,1]
translation << 'ang'
puts translation

在Ruby中有很多方法可以做任何事情,当你创造一些更简单,更易于维护的东西时,往往会退后一步,考虑你是否过度工程化。