在内存Ruby中压缩一个字符串

adr*_*ian 2 ruby ruby-on-rails

有没有办法压缩字符串(使用gem或标准的lib),以便我可以获得字符串的压缩结果?例:

"hello world".zip #=> zipped version of string
Run Code Online (Sandbox Code Playgroud)

此外,如果有人可以在他们的解决方案中包含减压,那么减压会很好.

Ism*_*reu 8

你可以使用Zlib

>> require 'zlib'
=> true
>> s = "this is a long string with many many many many repetition"
=> "this is a long string with many many many many repetition"
>> s.size
=> 57
>> cs = Zlib.deflate(s)
=> "x\x9C+\xC9\xC8,V\x00\xA2D\x85\x9C\xFC\xBCt\x85\xE2\x92\xA2L U\x9EY\x92\xA1\x90\x9B\x98W\x89N\x14\xA5\x16\xA4\x96d\x96d\xE6\xE7\x01\x00\\?\x15P"
>> cs.size
=> 48
>> is = Zlib.inflate(cs)
=> "this is a long string with many many many many repetition"
Run Code Online (Sandbox Code Playgroud)

  • 正准备发布,因为它在stdlib中,所以非常容易访问:) http://www.ruby-doc.org/stdlib-1.9.3/libdoc/zlib/rdoc/Zlib/Deflate.html (2认同)