如何在字符串上进行模式匹配,其中传递分号的任一侧将返回true?换句话说,是否有一种简单的模式匹配方式,它包含子串?
@matched_string "x-wat"
def match(@matched_string), do: true
match("x-wat") # true
match("x-wat; s-wat") # true
match("s-wat; x-wat") # true
match("s-wat") # false
match("x-wat-y") #false
Run Code Online (Sandbox Code Playgroud)
不,这不能通过模式匹配来完成.您可以匹配字符串的前缀,或者如果您知道字符串开头的每个部分的长度,您可以指定它们的大小并匹配,例如<<_::size(4), @matched_string, _::binary>>,但您通常不能匹配任何任意子字符串.在这种情况下,您可以改为拆分;,修剪字符串,并检查它是否包含"x-wat":
def match(string) do
string |> String.split(";") |> Enum.map(&String.trim/1) |> Enum.member?(string)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |