我得到一个保存字符串的变量。我想将其修剪为第一个“?”签名,这样我就可以进一步传递。
例如,我想始终从
x = /example?idontwantthis
转换为 x = /example?
如果你的字符串总是看起来像路径+查询参数,你也可以使用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
。在正则表达式中使用后视来生成与您要求的最终结果相匹配的结果。
x |> String.split(~r{(?<=\?)}) |> hd()
#⇒ "/example?"