どうすればこれを改善できますか?
このコードの目的は、フォームから hash_tags #twittertype の文字列をキャプチャするメソッドで使用することです。単語のリストを解析し、すべての単語が分離されていることを確認します。
WORD_TEST = "123 sunset #2d2-apple,#home,#star #Babyclub, #apple_surprise #apple,cats mustard#dog , #basic_cable safety #222 #dog-D#DOG#2D "
SECOND_TEST = 'orion#Orion#oRion,Mike'
これは私の問題領域RegXpsです...
_string_rgx = /([a-zA-Z0-9]+(-|_)?\w+|#?[a-zA-Z0-9]+(-|_)?\w+)/
add_pound_sign = lambda { |a| a[0].chr == '#' ? a : a='#' + a; a}
正規表現についてはあまり知りません。したがって、スキャンの結果から最初の[要素]を収集する必要がありました->奇妙なものが得られましたが、最初の要素は常に私が望んでいたものでした。
t_word = WORD_TEST.scan(_string_rgx).collect {|i| i[0] }
s_word = SECOND_TEST.scan(_string_rgx).collect {|i| i[0] }
t_word.map! { |a| a = add_pound_sign.call(a); a }
s_word.map! { |a| a = add_pound_sign.call(a); a }
結果は私が望むものです。Ruby | からの洞察が欲しいだけです。正規表現の第一人者がいます。
puts t_word.inspect
[
"#123", "#sunset", "#2d2-apple", "#home", "#star", "#Babyclub",
"#apple_surprise", "#apple", "#cats", "#mustard", "#dog",
"#basic_cable", "#safety", "#222", "#dog-D", "#DOG", "#2D"
]
puts s_word.inspect
[
"#orion", "#Orion", "#oRion", "#Mike"
]
前もって感謝します。