gpt4 book ai didi

erlang 中的字符串值

转载 作者:行者123 更新时间:2023-12-01 23:54:43 25 4
gpt4 key购买 nike

我是 erlang 的新手。我必须维护和实现一个用 erlang 构建的后端项目的新功能。我在 c/c++、php、ruby、python 和 javascript 方面有很强的背景。我在实现从电话号码列表中删除一些前缀的功能时遇到了问题

-module(reminder_group).
-export([address_with_no_prefix/1]).

-define(PREFIXES, [
'855',
'+855',
'0',
'+0',
'+'
]).

address_with_no_prefix(Address) ->
address_with_no_prefix(Address, ?PREFIXES).

address_with_no_prefix(Address, []) -> Address;

address_with_no_prefix(Address, Prefixes) ->
[Prefix|H] = Prefixes,
Length = string:len(Prefix),
AddressPrefix = string:substr(Address, 1, Length),

if
Prefix == AddressPrefix ->
string:substr(Address, Length);
true ->
address_with_no_prefix(Address, H)
end.

编译后运行

reminder_group:address_with_no_prefix("0123445")

我收到以下错误:

1> reminder_group:address_with_no_prefix("0123445").
** exception error: bad argument
in function length/1
called as length('855')
in call from string:len/1 (string.erl, line 66)
in call from reminder_group:address_with_no_prefix/2 (src/models/reminder_group.erl, line 34)

这似乎是 Length = string:len(Prefix) 的问题,但是我测试运行

string:len("855"). 

结果 3 工作正常。我的字符串值列表有什么问题吗?请帮忙。

最佳答案

您使用单引号(而不是双引号)来表示您的前缀。我假设你的意思是这些是字符串,而不是原子(因此应用 string:len)?

您的测试成功了,因为您正确地使用了双引号来构造字符串文字。

关于erlang 中的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24623611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com