teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

文字列の個数を数える方法について追記しました

2016/11/08 00:56

投稿

tatsuya6502
tatsuya6502

スコア2055

answer CHANGED
@@ -8,4 +8,16 @@
8
8
  iex> s |> to_char_list |> Enum.filter(&(&1 == c)) |> length |> IO.puts
9
9
  3
10
10
  :ok
11
+ ```
12
+
13
+ ---
14
+
15
+ **2016年11月8日 追記**
16
+
17
+ 単一の文字ではなくて、文字列(例:`~s("id":)`)の個数を数えたい場合は、Regex モジュールの [`scan/3`](http://elixir-lang.org/docs/stable/elixir/Regex.html#scan/3) を使うとよさそうです。この関数は、正規表現にマッチした全ての文字列をリストにして返しますので、そのリストの length をとれば OK です。
18
+
19
+ ```elixir
20
+ iex> s = ~s("id": ... "id": ... "id":)
21
+ iex> Regex.scan(~r{"\id\":}, s) |> length
22
+ 3
11
23
  ```

1

誤字の修正

2016/11/08 00:56

投稿

tatsuya6502
tatsuya6502

スコア2055

answer CHANGED
@@ -1,4 +1,4 @@
1
- たしかに、Elixir の標準ライブラリには、そのようなことをする関数はなさそうですね。既存の関数を組み合わせるなら、以下の方法で実現できます。
1
+ たしかに、Elixir の標準ライブラリには、そのようなことをする関数はなさそうですね。既存の関数を組み合わせるのでよいのなら、以下の方法で実現できます。
2
2
 
3
3
  ```elixir
4
4
  iex> s = "hello, world"