在Erlang中区分字符串和列表
在Erlang中,当您有一个可打印字符列表时,它是一个字符串,但字符串也是一个项目列表,并且列表的所有函数都可以应用于字符串。实际上,Erlang中不存在数据结构字符串 我的部分代码需要确保某些东西不仅是一个列表,而且是一个字符串。(一根真正的弦)。它需要将列表(如在Erlang中区分字符串和列表,erlang,Erlang,在Erlang中,当您有一个可打印字符列表时,它是一个字符串,但字符串也是一个项目列表,并且列表的所有函数都可以应用于字符串。实际上,Erlang中不存在数据结构字符串 我的部分代码需要确保某些东西不仅是一个列表,而且是一个字符串。(一根真正的弦)。它需要将列表(如[1,2,3,a,b,“josh”])与字符串(如“Muzaaya”)分开 字符串和列表的保护表达式都是列表/1将显示true。没有像is_string/1这样的保护,这意味着我需要一个代码片段来确保我的数据是字符串 本例中的字符串是
[1,2,3,a,b,“josh”]
)与字符串(如“Muzaaya”
)分开
字符串和列表的保护表达式都是列表/1
将显示true
。没有像is_string/1
这样的保护,这意味着我需要一个代码片段来确保我的数据是字符串
本例中的字符串是一个只能打印的列表(按字母顺序,大写和小写),可能包含数字,例如“Muzaaya2536 618 Joshua”
。我需要一个代码片段please(Erlang),它将为我检查这一点,并确保变量是一个字符串,而不仅仅是一个列表。感谢使用可打印字符的iPrint(3)定义--
isprint(X)当X>=32时,X<127->true;
isprint(824;)->false。
当is_List(List)->List:all(有趣的isprint/1,List)时,is_字符串(List);
是\u字符串(\u0)->false。
但是,您将无法将其用作保护。模块
io_lib
中有两个函数,这可能会有所帮助:以及哪个函数测试参数是否分别是可打印的latin1或unicode字符列表。请参见此函数也适用于latin1字符集,但可能需要注意的是,它将拒绝Unicode字符代码。
isprint(X) when X >= 32, X < 127 -> true;
isprint(_) -> false.
is_string(List) when is_list(List) -> lists:all(fun isprint/1, List);
is_string(_) -> false.