Die folgende sollten Sie gab für das Beispiel arbeiten:
str.gsub(/\s+/m, ' ').strip.split(" ")
es zurück:
["aa", "bbb", "cc", "dd", "ee"]
Bedeutung der Code:
/\s+/m
ist der kompliziertere Teil. \s
bedeutet Leerraum, also \s+
bedeutet ein oder mehrere Leerzeichen. In der /m
Teil, m
heißt ein Modifikator, in diesem Fall bedeutet es, multiline, was bedeutet, besuchen Sie viele Zeilen, nicht nur eine, die das Standardverhalten ist. Also, /\s+/m
bedeutet, finden Sie Sequenzen von einem oder mehreren Leerzeichen.
gsub
bedeutet ersetzen alle.
strip
ist das Äquivalent von trim
in anderen Sprachen und entfernt Leerzeichen am Anfang und am Ende der Zeichenfolge.
Da ich die Erklärung geschrieben habe, könnte es der Fall sein, wo Sie am Ende oder am Anfang der Zeichenfolge mit und End-Line-Zeichen enden.
Um sicher zu sein
Der Code geschrieben werden könnte:
str.gsub(/\s+/m, ' ').gsub(/^\s+|\s+$/m, '').split(" ")
wenn Sie hatte also:
str = "\n aa bbb\n cc dd ee\n\n"
Dann würden Sie erhalten:
["aa", "bbb", "cc", "dd", "ee"]
Bedeutung des neuen Code:
^\s+
eine Folge von weißen Leerzeichen am Anfang des Strings
\s+$
eine Folge von weißen Leerzeichen am Ende der Zeichenfolge
So gsub(/^\s+|\s+$/m, '')
Mittel entfernen beliebige Folge von weißen Leerzeichen am Anfang der Zeichenfolge und am Ende der Zeichenfolge.
Danke für Ihre Antwort, Candide! Würden Sie (oder irgendjemand) etwas dagegen tun, Ihren Code kurz zu erklären? –
@JJBeck siehe Update. – Candide
Rubocop scheitert an der Trennung ("") wegen der doppelten Anführungszeichen. – ablarg