[英]How to get the data from line number n to last line from a multi-line string in ruby?
在 Ruby 中有更好的方法来处理 HTTP 请求,例如使用标准库的Net::HTTP
。
说了这么多,我来回答你的问题。
HTTP 标准指定标头和正文由仅包含 CRLF ( \\r\\n
) 的空行分隔。 标题的每一行也以 CRLF 结尾。 因此,我们可以简单地在第一次出现两个 CRLF 时拆分响应,即在字符串"\\r\\n\\r\\n"
。
由于这个序列也可能出现在正文中,我们需要指定我们希望我们的拆分最多有 2 个元素。
header, body = response.split("\r\n\r\n", 2)
请注意,尽管如此,最后的标题行不会以"\\r\\n"
结尾,但这应该不是问题。 技术上更正确的版本是在"\\r\\n"
后跟一个"\\r\\n"
处拆分。 这样我们就不会在拆分时去掉尾随的"\\r\\n"
。 这可以通过使用后视的正则表达式来完成:
header, body = response.split(/(?<=\r\n)\r\n/, 2)
不过,您在标题中的问题的答案有点不同:
如何从 ruby 中的多行字符串获取从第 n 行到最后一行的数据?
response.lines[n..].join
(在 Ruby 2.6 之前,范围需要指定为n..-1
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.