Могу ли я отделить массив от текста? - PullRequest
2 голосов
/ 24 апреля 2011

Если у меня есть такой массив

["Member", "Friends", "Hello", "Components", "Family", "Lastname"]

, и мне нужно разделить его на "Components" и получить 2 массива, которые

["Member", "Friends", "Hello"]

и

["Family", "Lastname"]

Могу ли я это сделать и как?

Ответы [ 5 ]

5 голосов
/ 24 апреля 2011

Вы можете использовать Array # slice :

class Array
  def msplit(m)
    idx = self.index(m)
    idx ? [self[0..idx-1], self[idx+1..-1]] : nil
  end
end

arr = ["Member", "Friends", "Hello", "Components", "Family", "Lastname"]
a, b = arr.msplit("Components")
a # => ["Member", "Friends", "Hello"]
b # => ["Family", "Lastname"]
a.msplit("Foo") # => nil
1 голос
/ 24 апреля 2011

в рубине 1.9 (из-за метода chunk ):

array = ["Member", "Friends", "Hello", "Components", "Family", "Lastname"]
a, b = array.chunk {|e| e != "Components"}.map {|a, b| b if a}.compact
p a, b #=> ["Member", "Friends", "Hello"] ["Family", "Lastname"]
0 голосов
/ 24 апреля 2011

Как метод:

class Array
  def split_by(val)
    [0, a.index(val)], a[a.index(val)+1..-1]
  end
end

array = ["Member", "Friends", "Hello", "Components", "Family", "Lastname"]
first, second = array.split_by("Complonents")
first
#=> ["Member", "Friends", "Hello"] 
second
#=> ["Family", "Lastname"]

или вкладыш

array = ["Member", "Friends", "Hello", "Components", "Family", "Lastname"]
first, second = array[0, a.index("Components")], a[a.index("Components")+1..-1]
0 голосов
/ 24 апреля 2011
newArray = oldArray.slice(5,2)

используйте методы index и length для определения значений 5 и 2

должен оставить вас с:

newArray ["Семья", "Фамилия"]

oldArray ["Member", "Friends", "Hello"]

см. Документ здесь: http://www.ruby -doc.org / core-1.8.3 / classes / Array.html # M000398

0 голосов
/ 24 апреля 2011

Может быть

i = ary.index["Components"] - 1
ary[0..i]            #=>["Member", "Friends", "Hello"]
i = ary.index["Components"] + 1
ary[i..ary.length]   #=>["Family", "Lastname"]

или

ary[0..ary.index["Components"]-1]            #=>["Member", "Friends", "Hello"]
ary[ary.index["Components"]+1..ary.length]   #=>["Family", "Lastname"]

Также можно использовать:

i = ary.index["Components"] - 1
ary.take(i)          #=>["Member", "Friends", "Hello"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...