【问题标题】:Why Can't I Strip This Character From A String?为什么我不能从字符串中去掉这个字符?
【发布时间】:2020-02-09 22:08:18
【问题描述】:

Windows 7 x64 上的 Elixir 1.0、Erlang 17.3。

我输入这个代码:

l = "[9,0]"
s = String.strip(l,"[")

我明白了:

** (FunctionClauseError) String.lstrip/2 中没有函数子句匹配 (elixir) lib/string.ex:527: String.lstrip("[9,0]", "[") (长生不老药) lib/string.ex:564: String.strip/2

我错过了什么?

我也试过s = String.strip(l,",") 和同样的错误。也试过s = String.strip(l,'[')同样的错误。

我错过了什么?

【问题讨论】:

    标签: string elixir


    【解决方案1】:

    您想将一个字符传递给String.strip/2

    s = String.strip(l, ?[)
    

    正如 Shashidhar 在评论中指出的那样,String.strip/2 已从 Elixir 文档中删除,将来可能会完全删除。建议的替换是String.trim/2,它接受一个字符串作为它的第二个参数:

    s = String.trim(l, "[")
    

    【讨论】:

    【解决方案2】:

    您应该使用单个字符作为第二个参数,而不是字符串。

    iex(42)> l = "[9,0]"             
    "[9,0]"
    iex(43)> s = String.strip(l, ?[) 
    "9,0]"
    iex(44)> s = String.strip(l, ?])
    "[9,0"
    

    String.strip/2 文档中查看更多信息(在 Elixir 1.2 中已弃用,将由 String.trim 替换)。

    【讨论】:

    • 您知道我看到了该文档,但没有给予足够的关注。我正在尝试“?[”(尽管我没有在问题中提及)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2016-04-06
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多