Erlang:如果列表中存在字符,则在插入文本时检查字符

Posted

技术标签:

【中文标题】Erlang:如果列表中存在字符,则在插入文本时检查字符【英文标题】:Erlang: check chars in inserting text if chars exists in list 【发布时间】:2016-07-20 15:40:32 【问题描述】:

我正在寻找的是,如果插入的文本包含字符和整数,并且如果这些不在列表字符中返回 false

示例列表:

List = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

并且该函数应该有 1 个值,例如:

check(Text) ->
    List = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"],

如果插入的文本是:

check("you should have 10 point to do this")

应该返回 true 因为文本中的所有内容都存在于 List 中

如果插入的文本是:

check("you should + have ....")

应该返回 false,因为 List 中不存在“+”和“.”。

【问题讨论】:

【参考方案1】:

请注意,您的第一个 check 示例传递了一个包含空格的字符串,该字符串不在 List 中,所以我假设您想要处理它。

这是解决此问题的一种方法:

check(Text) ->
    List = "1234567890abcdefghijklmnopqrstuvwxyz \t\n.",
    lists:all(fun(C) -> lists:member(C, List) end, Text).

首先,请注意,List 不是您最初指定的字符串列表,而是字符列表。我还在List 中添加了空格、制表符、换行符和句点字符。

check/1 的第二行逐个字符遍历列表Text。对于每个字符C,我们检查它是否是List 的成员。如果该测试对所有字符都返回 true,则 lists:all/2 返回 true,否则返回 false。

【讨论】:

以上是关于Erlang:如果列表中存在字符,则在插入文本时检查字符的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:如果 table1 中的行存在,则在 table2 上插入行

[PDO如果ID存在,则在更新时插入MySQL

Erlang - 在外部文件中搜索特定字符串,如果不存在则追加文件

如果值不在另一个表中,则在一个表中插入该值

如果工作表包含下拉列表,则在访问中导入 Excel 数据时出现问题

如果文本文件不存在并显示另一个表单,则在表单加载时隐藏表单