15

我很难找到解决方案。如何从字符串中删除第一个单词,如下面的字符串。

     "i am going to school"

     "he is going to school"

     "she is going to school" 

     "they are going to school"

所以字符串可以是任何字符串,并且不知道第一个单词的确切长度。但只想删除第一个单词。

结果应该如下所示

      "am going to school"

     "is going to school"

     "is going to school" 

     "are going to school"

有什么帮助吗?

谢谢

4

4 回答 4

28
"i am going to school".split(' ')[1..-1].join(' ')

=> "am going to school"

您可以在 ruby​​ 的数组中双向使用,因此 -1 是最后一个元素。

于 2013-03-25T11:18:56.593 回答
10

'she is going to school'[/(?<=\s).*/] => "is going to school"

这使用了 Ruby 的正向后视锚:

(?<=pat) - 肯定的后向断言:确保前面的字符匹配 pat,但不包括匹配文本中的那些字符

因此,该模式会查找一个空格字符,后跟一个由任意字符组成的字符串。由于重复(例如,“*”)是贪婪的,它选择最长的匹配字符串。

于 2013-03-25T11:25:39.367 回答
1

使用正则表达式

str = "i am going to school"
puts str.gsub(/^(\w\s+)(.*)/, '\2')

=> "am going to school"
于 2013-03-25T11:22:02.810 回答
1

对每个字符串执行此操作:

string.sub(/\s*[\w']+\s+/, "")
于 2013-03-25T11:29:34.833 回答