2016-07-16 11 views
0

ich folgendes Problem in meinem Ruby-Programm hat:Wie eine Zeichenfolge teilen, basierend auf mehreren Kriterien in Ruby

def prompt(*input) 
    print *input 
    gets.strip() 
end 

def what_up(greeting, bros) 
    bros.each { |bro| puts "What up #{bro}!"} 
end 

friends = (prompt "List all of your friends, separate them by commas!").split(HELP) 

what_up("What up", friends) 

Ich mag die eingegebene Zeichenkette durch ein Komma trennen; aufgrund von Abweichungen bei den Benutzereingaben möchte ich in der Lage sein, basierend auf "," oder ","

zu teilen. Alles, was ich finden konnte, ist über Syntax wie/\ s |,/etc sprechen; Diese Syntax scheint jedoch nichts in Zitaten zu berücksichtigen. Ich habe versucht mit/\ W/auch, die die Zeichenfolge in ein Array von Wörtern und Leerzeichen aufgeteilt. Das konnte ich nutzen, wissen aber nicht, wie in einer Reihe von „“, um loszuwerden, die wie folgt aussieht:

["Hello", " ", "Great", " ", "World"] 

, die verwandelt sich in

["Hello", "Great", "World"] 

Antwort

0

Sie können alle leere Strings aus dem resultierenden Array ablehnen die folgenden Werke für mich:

"hurp,durp, foo, bar,baz".split(/\W/).reject(&:empty?) # => ["hurp", "durp", "foo", "bar", "baz"] 
0

Dies sollte funktionieren:

"Foo,bar, foo, bar".split(",").map(&:strip) # => ["Foo", "bar", "foo", "bar"] 
0
str = "Humpty, Dumpty,sat on a  wall" 

str.split(/,\s*/) 
    #=> ["Humpty", "Dumpty", "sat on a", "wall"] 

Dieser reguläre Ausdruck ("regex") liest, (hier nur Leerzeichen) "ein Komma von null oder mehr (*) Leerzeichen (\s), gefolgt paßt".

Siehe Regexp.

+0

Dies ist genau das, was ich gesucht habe! Funktioniert perfekt! Ich bin neu in all diesen shorthands, die innerhalb der Klammer verwendet werden. Könnten Sie auf eine Website verlinken, die diese und ihre Syntax erklärt? Oder erklären Sie das \ s * und was es macht? –

+0

Der reguläre Ausdruck ("regex") lautet: "Passen Sie ein Komma an, gefolgt von null oder mehr (' * ') Leerzeichen (' \ s') "(hier nur Leerzeichen). Siehe [Regexp] (http://ruby-doc.org/core-2.3.0/Regexp.html). –

+0

@Coatless, bitte bearbeiten Sie keine Antworten, nur um Ihre Präferenzen für Stil zu erzwingen. Zum einen hast du meinen Satz "This regular ..." so verschoben, dass er am Anfang erschien, bevor die Regex, auf die er sich bezieht, definiert wurde. Das macht keinen Sinn für mich. –

Verwandte Themen