打印string.length时出错

时间:2013-08-02 09:23:41

标签: ruby string fixnum

为什么我不能打印常量字符串的长度? 这是我的代码:

#!/usr/bin/ruby
Name = "Edgar Wallace"
name = "123456"

puts "Hello, my name is " + Name
puts "My name has " + Name.to_s.length + " characters."

我已经阅读了“How do I determine the length of a Fixnum in Ruby?”,但遗憾的是它并没有帮助我。

尝试后,抛出此错误:

./hello.rb:7:in `+': can't convert Fixnum into String (TypeError)
          from ./hello.rb:7:in `<main>'

2 个答案:

答案 0 :(得分:12)

您无法连接到具有Fixnum的字符串:

>> "A" + 1
TypeError: can't convert Fixnum into String
    from (irb):1:in `+'
    from (irb):1
    from /usr/bin/irb:12:in `<main>'
>> "A" + 1.to_s
=> "A1"

并且,您不需要Name.to_s,因为Name已经是String对象。只需Name即可。

将Fixnum(length)转换为String:

puts "My name has " + Name.length.to_s + " characters."

或者,作为替代方案:

puts "My name has #{Name.length} characters."

答案 1 :(得分:2)

在Ruby中使用插值"#{}"。它将评估您的表达式并打印您的字符串:

#!/usr/bin/ruby
Name = "Edgar Wallace"
name = "123456"

puts "My name has #{Name.length} characters."

注意:如果使用带单引号(')的字符串,则无法使用插值。使用双引号。