【发布时间】:2021-11-24 12:40:28
【问题描述】:
我得到一个包含字符串的变量。我想将它修剪为第一个“?”签名,这样我就可以通过了。
例如,我想始终从x = /example?idontwantthis 转换为x = /example?
【问题讨论】:
标签: elixir
我得到一个包含字符串的变量。我想将它修剪为第一个“?”签名,这样我就可以通过了。
例如,我想始终从x = /example?idontwantthis 转换为x = /example?
【问题讨论】:
标签: elixir
如果你的字符串总是看起来像一个路径 + 查询参数,你也可以使用 URI 模块来解析它:
URI.parse("/example?idontwantthis")
#=> %URI{authority: nil, fragment: nil, host: nil, path: "/example", port: nil, query: "idontwantthis", scheme: nil, userinfo: nil}
URI.parse("/example?idontwantthis").path
#=> "/example"
会有一个性能权衡,拆分字符串可能足以满足您的需求,但是您的示例看起来像 URI,我可能会首先达到这一点。
【讨论】:
我会选择String.split/3
"/example?idontwantthis" |> String.split("?") |> hd()
#⇒ "/example"
【讨论】:
这个解决方案也是基于String.split/3。在正则表达式中使用look-behind 生成与您要求的最终结果相匹配的结果。
x |> String.split(~r{(?<=\?)}) |> hd()
"/example?"
【讨论】: