Ruby String对象是空还是不?

vin*_*boy 5 ruby string ruby-on-rails

我有一个字符串,它是Ruby on Rails的输出 render_to_string

在Ruby调试器中,这就是我得到的

pp string.inspect # ->  blank
pp string         # ->  blank
pp string.Class   # ->  String
pp string.empty?  # ->  false
pp string.nil?    # ->  false
pp string.blank?  # ->  false
pp string.to_s    # ->  blank
Run Code Online (Sandbox Code Playgroud)

我知道字符串中有内容,因为logger.info string按预期返回字符串,但我不知道怎么做到.

有任何想法吗?谢谢!

编辑:我发现这个问题是非常本地化的.它只发生在我使用ruby-debugger时.它发生在任何带有百分号的字符串中.

例如,如果我创建了一个字符串

string = 'this is a string with a % symbol'
Run Code Online (Sandbox Code Playgroud)

字符串不能再被检查,打印,甚至打开包装.

我在Ruby 1.8和Rails 2.3上.

我认为这可能只是我对Ruby中普通事物缺乏了解的一部分.

Til*_*ilo 2

看起来你的字符串肯定不为空。

您可以下载 String 类的 hexdump 扩展,然后执行以下操作:

require 'hexdump'

#... whatever you do in your program

puts string.hexdump
Run Code Online (Sandbox Code Playgroud)

并将输出发布到您的问题中?

这样我们就可以看到字符串中的内容,即使这些是不可打印的字符。

看:

http://www.unixgods.org/~tilo/Ruby/hexdump.html