2017-11-29 3 views
2

私はElixirに新しく、文字列に一致する機能が不明です。 は、私は基本的にはちょうどつぶやきで、ハッシュタグ(#)が含まれ、その中のすべての単語特定のパターンに一致する特定の単語のリストを取得するにはどうすればよいですか?

S = "This is a #bad day for #trump #america" 

def get_hashtags(S) 
....... 
end 

Output : ["#bad", "#trump", "#america"] 
それはのだろう

を出力する入力として文字列Sを受け入れるエリキシル関数を記述しようとしています大きな助け。ありがとうございました。

+0

_Sidenote:_名は、それらがない限り大文字にするべきではありませんモジュール名です。 'S'⇒' s'。 – mudasobwa

答えて

1

Regexモジュール

iex> ~r/#[^\s]+/ 
    |> Regex.scan("This is a #bad day for #trump #america") 
    |> Enum.map(&hd/1) 

["#bad", "#trump", "#america"] 
+0

ありがとうございます。魅力的な作品! – Shubh77

+0

@ Shubh77それがあなたのために働いたかどうかは、左側の緑色の✓をクリックして答えを正しいとマークする必要があります。 – mudasobwa

+1

Regex.scan( "#trump #americaの#bad日"、キャプチャ::最初)|>リスト.flatten'。 – mudasobwa

1

を確認し、このタスクを達成するための迅速かつelixirish方法は、フィルタでパターンマッチに次のようになります。

"This is a #bad day for #trump #america" 
|> String.split() 
|> Enum.filter(fn 
    <<"#", _ :: binary>> -> true 
    _ -> false 
    end) 
#⇒ ["#bad", "#trump", "#america"] 
関連する問題