Frage Entfernen Sie doppelte Anführungszeichen aus der Zeichenfolge


Ich versuche, Daten aus einer MySQL-Datenbank zu erhalten und Ruby zu verwenden, um es in eine flache Textdatei neu zu formatieren. Einige meiner MySQL-Daten enthalten doppelte Anführungszeichen:

Matthew "Matt" Perry

und ich muss diese Anführungszeichen entfernen und durch etwas anderes ersetzen, | zum Beispiel.

Ich habe einen weiteren Beitrag in stackoverflow über das Entfernen von Zitaten gefunden, die folgendes vorschlagen:

s.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact

aber das gibt die Zeichenfolge intakt (in doppelten Anführungszeichen) zurück. Wie bekomme ich

Matthew |Matt| Perry

stattdessen?


14
2018-01-18 04:08


Ursprung


Antworten:


Dies wird es tun, wenn Sie nicht ändern möchten s:

new_s = s.gsub /"/, '|'

Wenn Sie ändern möchten s:

s.gsub! /"/, '|'

22
2018-01-18 04:14



Du könntest etwas verwenden wie:

text = 'Matthew "Matt" Perry'

text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry"

text = "Matthew 'Matt' Perry"
text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry"

4
2018-01-18 04:16



Es entfernt Doppelquoten. Sie können sie in IRB oder bei Verwendung sehen p nur weil String in diesen Fällen in angezeigt wird nett Form, so dass Sie sehen, dass sie Saiten sind.

irb> 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
=> ["Matthew", "Matt", "Perry"]

In Wirklichkeit haben sie schon keine doppelten Zahlen.

irb> puts 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
Matthew
Matt
Perry
=> nil

Und um Doppelquoten durch Bindestrich zu ersetzen, können Sie verwenden .tr:

irb> 'Matthew "Matt" Perry'.tr '"','|'
=> "Matthew |Matt| Perry"

0
2018-01-18 04:15



Andere Möglichkeiten sind:

s.tr! '"', '|'
s2 = s.tr '"', '|'

0
2018-01-18 04:15