ein Satz gegeben, möchte ich alle duplizierten Wörter zählen: Es ist ein Exercice von Exercism.io ist Word count
Entfernen Sie alle speziellen Zeichen außer appostrophe
Zum Beispiel für die Eingabe "olly olly in come free"
plain olly: 2 in: 1 come: 1 free: 1
ich habe diesen Test für exemple:
def test_with_quotations
phrase = Phrase.new("Joe can't tell between 'large' and large.")
counts = {"joe"=>1, "can't"=>1, "tell"=>1, "between"=>1, "large"=>2, "and"=>1}
assert_equal counts, phrase.word_count
end
das ist meine Methode
def word_count
phrase = @phrase.downcase.split(/\W+/)
counts = phrase.group_by{|word| word}.map {|k,v| [k, v.count]}
Hash[*counts.flatten]
end
Für den Test oben ich diesen Fehler haben, wenn ich es im Terminal laufen:
2) Failure:
PhraseTest#test_with_apostrophes [word_count_test.rb:69]:
--- expected
+++ actual
@@ -1 +1 @@
-{"first"=>1, "don't"=>2, "laugh"=>1, "then"=>1, "cry"=>1}
+{"first"=>1, "don"=>2, "t"=>2, "laugh"=>1, "then"=>1, "cry"=>1}
Mein Problem ist, alle Zeichen außer '
Apostroph zu entfernen .. .
die Regex in der Methode fast funktioniert ... phrase = @phrase.downcase.split(/\W+/)
aber die Apostrophe entfernen ...
Ich will nicht, um ein Wort das Apostroph halten, 'Hello'
=>Hello
aber Don't be cruel
=>Don't
be
cruel
Versuch '/ [^ 'az] /' – dawg
oder dies versuchen: '/ [az' ] +/I' –
es die einfachen Anführungszeichen halten :(@dagw –