2011-10-05 35 views
5

Tôi có một chuỗi mà là sản phẩm của Ruby on Rails render_to_stringĐối tượng chuỗi Ruby rỗng hay không?

Khi trong trình gỡ lỗi của Ruby đây là những gì tôi nhận được

pp string.inspect # -> blank 
pp string   # -> blank 
pp string.Class # -> String 
pp string.empty? # -> false 
pp string.nil? # -> false 
pp string.blank? # -> false 
pp string.to_s # -> blank 

Tôi biết có nội dung trong chuỗi vì logger.info string trả về chuỗi như mong đợi, nhưng tôi không biết làm thế nào để có được nó.

Bất kỳ ý tưởng nào? Cảm ơn!

EDIT: Tôi đã phát hiện ra rằng vấn đề này rất được bản địa hoá. Nó chỉ xảy ra khi tôi đang sử dụng trình gỡ lỗi ruby. Và nó xảy ra với bất kỳ chuỗi nào có biểu tượng phần trăm trong đó.

Ví dụ, Nếu tôi làm một chuỗi

string = 'this is a string with a % symbol' 

chuỗi có thể không còn được kiểm tra, in, hoặc thậm chí giải nén.

Tôi đang sử dụng Ruby 1.8 và Rails 2.3.

Tôi nghĩ rằng điều này có thể chỉ là một phần của sự thiếu hiểu biết của tôi về một cái gì đó trần tục trong Ruby.

+6

lẽ chứa một ký tự xuống dòng. 'String.length' cung cấp cho bạn những gì? Ngoài ra, hãy thử 'print" ["+ string +"] "' .. cũng sẽ giúp "xem" chuỗi chứa. Hãy thử sử dụng một cái gì đó khác với 'pp', chẳng hạn như' p', 'puts' hoặc' print'. – Zabba

+0

string.length trả về 12045. Đó là một chuỗi dài. Những thứ khác không hoạt động. – vinhboy

+0

Chuỗi ký tự là gì? – squarism

Trả lời

2

Dường như chuỗi của bạn chắc chắn không trống.

Bạn có thể tải về phần mở rộng hexdump cho lớp String, và làm điều này:

require 'hexdump' 

#... whatever you do in your program 

puts string.hexdump 

và gửi đầu ra trong câu hỏi của bạn?

Bằng cách này chúng ta có thể nhìn thấy những gì trong chuỗi, ngay cả khi đó là những nhân vật không thể in được ..

Xem:

http://www.unixgods.org/~tilo/Ruby/hexdump.html

Các vấn đề liên quan