2013-03-25 134 views
11

我很努力地找到解決方案。我如何從字符串中刪除第一個字詞,如下面的字符串。紅寶石從字符串中刪除第一個字

 "i am going to school" 

    "he is going to school" 

    "she is going to school" 

    "they are going to school" 

這樣字符串可以是任意的字符串,不知道第一word.but的確切長度只是想刪除第一個字。

的結果應該是像下面

 "am going to school" 

    "is going to school" 

    "is going to school" 

    "are going to school" 

任何幫助嗎?

感謝

回答

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

=> "am going to school" 

你可以去兩種方式在紅寶石陣列,使得-1是最後一個元素。

+5

或者替代切片,' 「我要上學」 .split( ' ').drop(1)。加入('')'使用[可枚舉.drop](http://ruby-doc.org/core-2.0/Enumerable.html#method-i-drop)跳過第一個元素。 – 2013-03-25 11:26:22

1

使用正則表達式

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

=> "am going to school" 
+4

當每個字符串最多有一個匹配時,沒有必要使用'gsub'。 – sawa 2013-03-25 11:32:18

9

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

這將使用Ruby的正回顧後主播:

- 正向後斷言(< =拍?):確保前 字符匹配拍,但不包括 匹配文字中的那些字符

所以這個模式尋找一個空白字符後跟一串任意字符。由於重複(例如,「*」)是貪婪的,因此它選擇最長的匹配字符串。

+1

很好的答案。你可以承擔更多的描述性。 – 2013-03-25 11:28:37

1

這樣做對每個字符串:

string.sub(/\s*[\w']+\s+/, "")