如何 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?"
我得到一个包含字符串的变量。我想 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?"