【问题标题】:How to remove everything after a character in a string如何修剪字符串
【发布时间】:2021-11-24 12:40:28
【问题描述】:

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

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

【问题讨论】:

    标签: elixir


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我会选择String.split/3

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

      【讨论】:

        【解决方案3】:

        这个解决方案也是基于String.split/3。在正则表达式中使用look-behind 生成与您要求的最终结果相匹配的结果。

        x |> String.split(~r{(?<=\?)}) |> hd()
        "/example?"
        

        【讨论】:

          猜你喜欢
          • 2022-06-22
          • 2022-01-01
          • 2017-04-25
          • 2012-12-21
          • 2020-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-10
          相关资源
          最近更新 更多