Ruby grep - Suche in einem array für Teile einer Zeichenkette

Ich bin neu mit Ruby und ein bisschen verwirrt durch den grep-Befehl in diesem code-block. Ich werde versuchen, zu sammeln all die mailbox-Namen via Net::IMAP und dann überprüfen Sie Sie gegen eine mailbox-argument. Wahrscheinlich der name der mailbox wird nur ein Teil der Argumentation. Zum Beispiel, jemand kann geben Sie in "Gesendet", wie das Postfach, sondern viele Male den Namen des Postfachs "POSTEINGANG".Gesendet."

   class ExamineMail
        def initialize(user, domain, pass, box)
           @username = user
           @domain = domain
           @pass = pass
           @mailbox = box 
        end

         def login()
            @imap = Net::IMAP.new("mail." + @domain)
            @imap.authenticate('LOGIN', @username + "@" + @domain, @pass)
            mailbox_array = @imap.list('','*').collect{ |mailbox| mailbox.name }
            #mailbox_array.any? { |w| @mailbox =~ /#{w}/}
            mailbox_array.grep(/^@mailbox/)
         end
   end

So, zuerst habe ich versucht .? aber das zurück nicht Sie mir den Namen des aktuellen Postfachs. Mit .grep bin ich in der Lage, um eine Liste der Postfächer, wenn @mailbox = "INBOX". Allerdings, wenn @mailbox = "Sent" es gibt einfach zurück [].

Hier ist ein Beispiel für eine, die funktioniert (mit "POSTEINGANG") und eine, die nicht (mit "Gesendet"):

#Get the list of inboxes
mailbox_array = imap.list('','*').collect{ |mailbox| mailbox.name }
=> ["INBOX", "INBOX.Trash", "INBOX.Sent", "INBOX.Sent Messages", "INBOX.Junk", "INBOX.Drafts", "INBOX.Deleted Messages", "INBOX.Apple Mail To Do"]

#Search for mailboxes including "Sent"
>> mailbox_array.grep(/^Sent/)
=> []

#Search for "INBOX"
>>             mailbox_array.grep(/^INBOX/)
=> ["INBOX", "INBOX.Trash", "INBOX.Sent", "INBOX.Sent Messages", "INBOX.Junk", "INBOX.Drafts", "INBOX.Deleted Messages", "INBOX.Apple Mail To Do"]

Ich denke, das problem ist, dass "POSTEINGANG" ist am Anfang des strings in das array, aber "Geschickt" ist in der Mitte und ist nach einer Zeit. Nicht sicher, wie Sie Sie zu beheben.

InformationsquelleAutor krapdagn | 2012-02-28

Schreibe einen Kommentar