Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Erlang中区分字符串和列表_Erlang - Fatal编程技术网

在Erlang中区分字符串和列表

在Erlang中区分字符串和列表,erlang,Erlang,在Erlang中,当您有一个可打印字符列表时,它是一个字符串,但字符串也是一个项目列表,并且列表的所有函数都可以应用于字符串。实际上,Erlang中不存在数据结构字符串 我的部分代码需要确保某些东西不仅是一个列表,而且是一个字符串。(一根真正的弦)。它需要将列表(如[1,2,3,a,b,“josh”])与字符串(如“Muzaaya”)分开 字符串和列表的保护表达式都是列表/1将显示true。没有像is_string/1这样的保护,这意味着我需要一个代码片段来确保我的数据是字符串 本例中的字符串是

在Erlang中,当您有一个可打印字符列表时,它是一个字符串,但字符串也是一个项目列表,并且列表的所有函数都可以应用于字符串。实际上,Erlang中不存在数据结构字符串

我的部分代码需要确保某些东西不仅是一个列表,而且是一个字符串。(一根真正的弦)。它需要将列表(如
[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
中有两个函数,这可能会有所帮助:以及哪个函数测试参数是否分别是可打印的latin1unicode字符列表。

请参见此函数也适用于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.