2013-06-20 43 views
1

考虑下面的代码(一个小的测试情况从一个现实的问题归结):如何解决IronRuby包装错误?

abc="ABC" 
b="B" 
print abc.index(b) 
print "\n" 

abc2=abc.unpack('C*').pack('C*') 
b2=b.unpack('C*').pack('C*') 
print abc2.index(b2) 
print "\n" 

在IdeOne它outputs与来自IronRuby的(32位或64位)

1 
1 

润命令行其输出

1 
nil 

而且尽管这样,如果我还打印abc==abc2它给true

这显然是IronRuby中的一个错误,但它是一个死了的项目,所以没有多少希望它会在不久的将来得到修复。

有谁知道一种解决方法,它可以让我把ASCII码打包回字符串中,其实际上可以像预期的那样工作?

回答

1

我曾经遇到类似的问题,不得不添加一个+''来强制字符串强制。

在上面的代码中,行

b2=b.unpack('C*').pack('C*') 

b2=b.unpack('C*').pack('C*') + '' 

被替换,并预期它会工作。