2013-06-24 36 views
-1

我知道我可以使用eval來獲取字符串返回象下面這樣:如何從檢查結果中獲取字符串?

"".inspect == "\"\"" # true 
eval("\"\"") == "" # true 

但除此之外eval,是否有另一種方式來做到這一點?

+3

你到底想幹什麼?你爲什麼需要這樣做?這沒有多大意義。 –

+0

'String :: class_eval {「\」\「」}'可能會做你想做的。 – bdares

+0

@theTinMan例如,我想要從字符串'「\」\「」'中獲取'「」'。我有一些數據是字符串檢查結果的結果,我需要將它們還原爲orignal字符串。 – xdazz

回答

2

就你而言,""是一個空字符串。 "\"\""是完全別的東西:一個字符串,當它被饋送到某個東西時,會產生你的空字符串""。而在這種情況下,就是Ruby解釋器。換句話說,"\"\""轉儲專門旨在由Ruby解釋器來eveluated,wheter在evalinstance_evalclass_eval,或ruby命令行,或irb,還是什麼......

即使有另一種方式來這樣做只會導致模仿Ruby解釋器。所以我敢說,不,做另一種方式沒有什麼意義。

+0

很高興知道! :) –

1

但除了eval,還有另一種方法可以做到嗎?

是可能的,下面看一下使用YAML

require 'yaml' 

YAML.load("\"\"") # => "" 
YAML.load("\"\"") == "" # => true 
相關問題