Ruby从两个问号之间的字符串中提取子字符串?

时间:2016-01-18 22:59:15

标签: ruby string

我们说我有一个这样的字符串:

"What is your first name? My first name is John. What is your last name? My last name is Doe."

如何在问号之间提取字符串?输出应为:

" My first name is John. What is your last name"

3 个答案:

答案 0 :(得分:6)

使用分割功能,然后访问中间的那个,这是问号之间的文字。

如果你想要领先的空间,你可以简单地做到这一点

string.split('?')[1]

要删除前导空格,您可以调用lstrip方法。

string.split('?')[1].lstrip

答案 1 :(得分:2)

我建议将正则表达式传递给String#slice - 它将返回与正则表达式匹配的(子)字符串,如果在您调用它的字符串中没有匹配项则返回nil

您通常会发现http://rubular.com/有助于正确使用正则表达式。

答案 2 :(得分:1)

您可以将String#gsub与正则表达式

一起使用
"What is your first name? My first name is John. What is your last name? My last name is Doe.".
  gsub(/^.*\?(.*)\?.*$/,"\\1")
#=> " My first name is John. What is your last name"

还有很多其他答案。我可以建议你提问一下吗?