【问题标题】:Search a key erlang搜索关键二郎
【发布时间】:2014-03-26 01:10:00
【问题描述】:

我有一个以下格式的元组中的表单列表和一个当前页面
CurrPageName = "ihtx_f_10_00_00_00_00_h210401".

FormList = {form_list, [{"IHTX_F_10_00_00_00_00_H210401",true},
                        {"IHTX_F_09_00_00_00_00_H210401",true},
                        {"IHTX_F_11_11_02_02_01_H220401",true},
                        {"IHTX_F_03_00_00_00_00_H210401",false},
                        {"IHTX_F_12_00_00_00_00_H211215",true},
                        {"IHTX_F_07_00_00_00_00_H210401",true},
                        {"IHTX_F_15_00_00_00_00_H210401",false},
                        {"IHTX_F_11_00_00_00_00_H210401",false},
                        {"IHTX_F_02_00_00_00_00_H210401",true},
                        {"IHTX_F_01_00_00_00_00_H240401",true}]}.

如何从 FormList 中找到 CurrPageName?我尝试了列表:keyfind,keysearch 到内部列表,但总是返回 false 或一些错误。如果 CurrPageName 存在并且其值为 true,则只有它应该返回 true,否则返回 false。

我是二郎的新手。谢谢

【问题讨论】:

    标签: erlang


    【解决方案1】:

    该列表将页面名称存储为大写字符串,因此首先确保您的 CurrPageName 变量也包含大写字符串

    CurrPageName = string:to_upper("ihtx_f_10_00_00_00_00_h210401").
    

    然后提取元组列表并搜索页面

    {form_list, L} = FormList, % Extract tuple list to L
    KeyPosition=1,             % The name we look for is at position 1 in the tuple
    T=lists:keyfind(CurrPageName, KeyPosition, L),
    case T of
     {_Key, true} ->
        true ;
     false ->
        false
    end.
    

    【讨论】:

    • 只需使用keymember 而不是keyfind
    【解决方案2】:

    你可以使用proplists

    CurrPageName = string:to_upper("ihtx_f_10_00_00_00_00_h210401").
    {form_list, L} = FormList, 
    Res = proplists:is_defined(CurrPageName, L)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 2010-11-02
      • 2010-10-02
      • 2011-03-06
      相关资源
      最近更新 更多