如何 trim 一个字符串

How to trim a string

我得到一个包含字符串的变量。我想 trim 它到第一个“?”签名,这样我就可以通过了。

例如,我想始终从 x = /example?idontwantthis 转换为 x = /example?

我会选择 String.split/3

"/example?idontwantthis" |> String.split("?") |> hd()
#⇒ "/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?"