在不同长度的字符串上匹配模式

时间:2017-04-12 15:27:24

标签: elixir

我有一个字符串列表:

<child [isShow]="show" (isShowChange)="show = $event"></child>

除了使用Regexp之外,如何从每个项目中轻松提取这两个数字?

 list1 = ["aaa_1_bbb_1326778", "aaa_629_bbb_37", "aaa_2254354_bbb_3997"]

有没有类似模式匹配的解决方案?

1 个答案:

答案 0 :(得分:3)

如果格式总是由下划线分隔的4个事物,第二个和第四个是整数,这是你想要的东西,我会使用String.split和模式匹配,如下所示:

list1 = ["aaa_1_bbb_1326778", "aaa_629_bbb_37", "aaa_2254354_bbb_3997"]

Enum.map(list1, fn(x) ->
  [_, a, _, b] = String.split(x, "_")
  {String.to_integer(a), String.to_integer(b)}
end) |> IO.inspect

输出:

[{1, 1326778}, {629, 37}, {2254354, 3997}]

虽然你可以在这里使用更多的模式匹配和更少的拆分,但是你需要定义一些函数并使用递归,只要String.split存在并且符合用例,我就不会亲自去做。 / p>