如何在Ruby中返回两个字符串之间的字符串的子字符串? [英] How to return the substring of a string between two strings in Ruby?

查看:28
本文介绍了如何在Ruby中返回两个字符串之间的字符串的子字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 Ruby 中返回字符串的两个字符串标记之间的字符串?

How would I return the string between two string markers of a string in Ruby?

例如我有:

  • input_string
  • str1_markerstring
  • str2_markerstring

想做类似的事情:

input_string.string_between_markers(str1_markerstring, str2_markerString)

示例文本:

s
# => "Charges for the period 2012-01-28 00:00:00 to 2012-02-27 23:59:59:<br>\nAny Network Cap remaining: $366.550<br>International Cap remaining: $0.000"
str1_markerstring
# => "Charges for the period"
str2_markerstring
# => "Any Network Cap"
s[/#{str1_markerstring}(.*?)#{str2_markerstring}/, 1]
# => nil  # IE DIDN'T WORK IN THIS CASE

使用 Ruby 1.9.3.

Using Ruby 1.9.3.

推荐答案

input_string = "blahblahblahSTARTfoofoofooENDwowowowowo"
str1_markerstring = "START"
str2_markerstring = "END"

input_string[/#{str1_markerstring}(.*?)#{str2_markerstring}/m, 1]
#=> "foofoofoo"

或者把它放在一个方法中:

or to put it in a method:

class String
  def string_between_markers marker1, marker2
    self[/#{Regexp.escape(marker1)}(.*?)#{Regexp.escape(marker2)}/m, 1]
  end
end

"blahblahblahSTARTfoofoofooENDwowowowowo".string_between_markers("START", "END")
#=> "foofoofoo"

这篇关于如何在Ruby中返回两个字符串之间的字符串的子字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆