2016-10-07 15 views
0

私はRubyで文字列の配列を選択してプルーニングする必要があり、部分的に動作させています。ルビーでマッチを選択して文字列を分割する方法は?

私はこのようになります文字列の配列があります

launchctl_list.select! { |f| /^(?!-)/.match(f) } 

この結果を:

321 com.apple.storeaccountd.daemon 
- com.apple.cmio.AVCAssistant 
- com.apple.diskmanagementd 
150 com.apple.CodeSigningHelper 
- com.apple.tailspind 
197 com.apple.sysmond 
- com.apple.storeassetd.daemon 
160 com.apple.sandboxd 

私がする必要がどのように以下の行がない整数を持つエントリのみを選択しています

321 com.apple.storeaccountd.daemon 
150 com.apple.CodeSigningHelper 
197 com.apple.sysmond 
160 com.apple.sandboxd 

これで、それぞれの「最後」の部分を保持したいだけです配列内に入れて、私は次の行がトリックを行うだろうと思ったが、そうではないと思った。

launchctl_list.select! { |f| f.split(' ').last } 

配列内の文字列に数値が落とされていない場合、何が欠けていますか?

+2

'launchctl_list.select {| f |/^(?! - )/。match(f)} .map {| f | fsplit( '').last} 'あなたが望むものです – bjhaid

+0

'与えられたブロックが真の値を返すすべてのアリのすべての要素を含む新しい配列を返します。 ' 対 '自己の要素。ブロックによって返された値を含む新しい配列を作成します。 ' – bjhaid

+0

https://ruby-doc.org/core-2.2.0/Array.html#method-i-map https://ruby-doc.org /core-2.2.0/Array.html#method-i-select – bjhaid

答えて

1

Array#selectメソッドは、リスト内の各エントリを変更することはなく、ブロックが返す内容に基づいて保持するものを選択するためだけに使用されます。

あなたが使いたいのはArray#map!このように:

launchctl_list.map!{|f| f.split(' ').last } 
関連する問題