erlang中的字符串值
Posted
技术标签:
【中文标题】erlang中的字符串值【英文标题】:string value in erlang 【发布时间】:2014-08-28 16:53:44 【问题描述】:我是 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 的结果一起工作正常。我的字符串值列表有什么问题吗? 请帮忙。
【问题讨论】:
【参考方案1】:您使用单引号(而不是双引号)来表示您的前缀。我假设您的意思是这些是字符串,而不是原子(因此应用string:len
)?
您的测试成功了,因为您正确地使用了双引号来构造字符串文字。
【讨论】:
感谢@Gian 指出这一点并给出很好的解释。我有点困惑。以上是关于erlang中的字符串值的主要内容,如果未能解决你的问题,请参考以下文章