Giả sử tôi muốn có một khối mã rất lớn của đoạn mã html được in đẹp với mã ruby của tôi. Cách sạch nhất để làm điều này mà không mất bất kỳ định dạng trong chuỗi của tôi hoặc phải nhớ một số loại regex gsub là gì.Có cách nào dễ dàng để thực hiện chuỗi thụt lề đa dòng trong Ruby không?
Encoding nó tất cả trong một dòng rất dễ làm nhưng khó đọc:
1.times do
# Note that the spaces have been changed to _ so that they are easy to see here.
doc = "\n<html>\n__<head>\n____<title>\n______Title\n____</title>\n__</head>\n__<body>\n____Body\n__</body>\n</html>\n"
ans = "Your document: %s" % [doc]
puts ans
end
Multiline văn bản trong ruby là dễ dàng hơn để đọc nhưng chuỗi không thể thụt vào với phần còn lại của mã:
1.times do
doc = "
<html>
<head>
<title>
Title
</title>
</head>
<body>
Body
</body>
</html>
"
ans = "Your document: %s" % [doc]
puts ans
end
Ví dụ sau đây là thụt vào với mã của tôi, nhưng chuỗi hiện nay có bốn không gian thêm trước mỗi dòng:
1.times do
doc = <<-EOM
<html>
<head>
<title>
Title
</title>
</head>
<body>
Body
</body>
</html>
EOM
ans = "Your document: %s" % [doc]
puts ans
end
Hầu hết mọi người đi với mã HEREDOC ở trên, và thực hiện một regex thay thế trên kết quả để lấy ra khoảng trống thừa ở đầu mỗi dòng. Tôi muốn một cách mà tôi không phải trải qua những rắc rối của sự hối hận mỗi lần.
Check-out - http://stackoverflow.com/questions/3350648/ruby-indented-multiline-strings – theglauber
Ngoài ra - http: // stackoverflow.com/questions/3772864/how-do-i-remove-hàng đầu-khoảng trắng-chars-từ-ruby-heredoc – theglauber
'Tôi có một chuỗi (" khi \ n \ n đồng hồ \ n cảnh \ n mười \ n ") sẽ sạch hơn nếu nó có thể được gõ vào với các ký tự dòng mới thực sự.' không có ý nghĩa. '" \ n "' là các ký tự dòng mới thực sự. –