Ruby比较字符串

时间:2012-12-10 10:30:44

标签: ruby string

我正在尝试将message[0]"CONNECT"进行比较,但它只是失败了:

puts message[0].dump 
->"\x00C\x00O\x00N\x00N\x00E\x00C\x00T\x00"
puts "CONNECT".dump
->"CONNECT"

有人能解释我为什么吗?

2 个答案:

答案 0 :(得分:2)

你的字符串中似乎有很多NULL字符。最好弄清楚它们来自哪里,但只要删除它们就可以使用它。

 def remove_null_chrs(str) 
     str.unpack('C*').select{|x|x != 0}.pack('C*')
 end

例如

remove_null_chrs("\x00C\x00O\x00N\x00N\x00E\x00C\x00T\x00")
=> "CONNECT"

答案 1 :(得分:0)

message [0]采用不同的编码

试试这个message[0].encode("UTF-8", :invalid=>:replace, :replace=>"?")

如果它不起作用,你必须尝试不同的编码。我认为这个答案仅适用于1.9。*版本。对于旧版本,我认为你必须要求iconv