Tôi đang làm việc với một đối tượng IO (một số văn bản đầu ra STDOUT
) và tôi đang cố gắng chuyển đổi nó thành chuỗi để tôi có thể thực hiện một số xử lý văn bản. Tôi muốn làm điều gì đó như thế này:Làm thế nào tôi có thể chuyển đổi một đối tượng IO thành một chuỗi trong Ruby?
my_io_object = $stdout
#=> #<IO:<STDOUT>>
my_io_object.puts('hi') #note: I know how to make 'hi' into a string, but this is a simplified example
#=>hi
my_io_object.to_s
Tôi đã thử một vài điều và nhận được một vài lỗi:
my_io_object.read
#=> IOError: not opened for reading
my_io_object.open
#=> NoMethodError: private method `open' called for #<IO:<STDOUT>>
IO.read(my_io_object)
#=> TypeError: can't convert IO into String
Tôi đã đọc qua các phương thức lớp IO, và tôi không thể tìm ra cách thao tác dữ liệu trong đối tượng đó. Bất kỳ đề xuất?
"IOError: không mở để đọc" phải là một đầu mối thích hợp. Hãy thử tìm kiếm lỗi đã nói. –
Bạn chưa nói rõ những gì bạn đang cố gắng làm. Giải thích bạn muốn làm gì và chúng tôi có thể cung cấp cho bạn một cách tốt hơn để đến đó. Bạn nhận được văn bản STDOUT của mình như thế nào? –
Cảm ơn, @theTinMan. Lời xin lỗi vì sự thiếu sáng tỏ - đó là sự phản ánh sự bối rối của tôi. Tôi đã kết thúc việc giải quyết điều này bằng cách chỉ thị STDOUT cho một đối tượng StringIO. – MothOnMars