未终止的字符串符合文件末尾

时间:2014-08-05 07:57:46

标签: ruby

以下是我的代码:

md5 = Digest::MD5.new
md5 << "!@#$"

然后是错误:

SyntaxError: (irb):46: unterminated string meets end of file

有什么问题?如何计算字符串"!@#$"的md5哈希?

3 个答案:

答案 0 :(得分:2)

双引号字符串中的哈希#符号用于变量和表达式替换。在这种情况下,您将全局变量$"的值替换为字符串,但您没有关闭字符串。语法正确的表达方式是

"!@#$"" # Note the extra closing quotes

然而,似乎你实际上并不想做变量替换,在这种情况下你应该总是使用单引号字符串:

'!@#$'

答案 1 :(得分:1)

你的问题是你得到的字符串是双撇号(&#34;) - 所以它被解释了。你内部有一个哈希(#),所以它试图进行表达式替换。将字符串放在单个撇号中:

md5 << '!@#$'

答案 2 :(得分:0)

好像你需要引用#

> puts "!@\#$"
!@#$