如何删除字符串中字符后面的所有内容

问题描述 投票:0回答:3

我得到一个保存字符串的变量。我想将其修剪为第一个“?”签名,这样我就可以进一步传递。

例如,我想始终从

x = /example?idontwantthis
转换为
x = /example?

elixir
3个回答
4
投票

如果你的字符串总是看起来像路径+查询参数,你也可以使用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,我可能会首先达到这一点。


3
投票

我会和

String.split/3

一起去
"/example?idontwantthis" |> String.split("?") |> hd()
#⇒ "/example"

1
投票

这个解决方案也是基于

String.split/3
。在正则表达式中使用后视来生成与您要求的最终结果相匹配的结果。

x |> String.split(~r{(?<=\?)}) |> hd()
#⇒ "/example?"
© www.soinside.com 2019 - 2024. All rights reserved.