打印MySQL CHAR()函数格式的ASCII字符 - Ruby

时间:2014-10-21 17:06:55

标签: ruby

我的代码输出有问题:

#!/usr/bin/env ruby

puts "Write some text: "
text = gets.chomp

text.each_byte do |asc|
    print asc
end
puts

例如,我在标准ASCII中写文字: abc ,输出为: 979899 ,但我想要 以格式打印 - CHAR(97,98,99)

我通过函数split或squeeze尝试过,但是例如split(',')不是,我正在寻找, 所以,如果有人能给我一个提示怎么做,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

这个怎么样:

puts "CHAR(#{text.each_byte.to_a.join(', ')})"

答案 1 :(得分:1)

将字节转换为字符串:

'abc'.each_byte.map(&:to_s)
# => ["97", "98", "99"]

加入,

'abc'.each_byte.map(&:to_s).join(', ')
# => "97, 98, 99"

最后使用字符串插值:

"CHAR(#{'abc'.each_byte.map(&:to_s).join(', ')})"
# => "CHAR(97, 98, 99)"

<强>更新

您可以将map(&:to_s)替换为to_a,因为String#join会将项目转换为字符串。