2013-08-28 39 views
2

我有一個字符串數組,每個字符串都有任意的單詞和任意數量的單詞。對於每個字符串,我只需要收集第一個和最後一個單詞。我可以做的第一個或最後一個:ruby​​從字符串中收集第一個和最後一個單詞

a = vs.split("\n"). 
    select { |i| i =~ /^\s+\d/ }. 
    collect { |i| i.scan(/\w+/).<first or last> } 

但不適合首先和最後。有什麼建議麼?

+1

請給一些樣品的輸入和預期的輸出也。只有代碼是沒有意義的.. –

回答

9

Array#values_at應該做的伎倆:

str = "a b c d e" 
str.scan(/\w+/).values_at(0, -1) 
#=> ["a", "e"] 
+1

不錯 - 另一個Ruby方法('values_at')我不知道! – Chowlett

+0

如果字符串有特殊字符,則不起作用。 split()方法解決了這個問題。例如,「CagãodoCaraças」.split('').values_at(0,-1) – 2013-11-05 18:41:54

+0

在這種情況下,您可以使用'/ [[:alpha:]] + /'。 – Stefan

1

你可以做以下也:

str = "I am a boy" 
[str[/^\w+/],str[/\w+$/]] 
# => ["I", "boy"] 
相關問題