実際に文字列が実際にリストに含まれているかどうかを調べようとしています。ここでリスト内の文字列を検索する - Erlang
comparing() ->
FileName = "msg-0001",
{ok,[NumLine],_} = io_lib:fread("msg-~d",FileName),
io:format("Numline:~p~n", [NumLine]),
{ok, Pars} = file:read_file("parsing.txt"),
{ok, Dump} = file:read_file("msg-0001"),
StringNumline = lists:flatten(io_lib:format("~p", [NumLine])),
io:format("StringNumline:~p~n", [StringNumline]),
StringDump = lists:flatten(io_lib:format("~p", [Dump])),
io:format("StringDump:~p~n", [StringDump]),
SubStringDump = string:substr(StringDump, 4),
io:format("SubStringDump:~p~n", [SubStringDump]),
Ndump = concat(StringNumline, SubStringDump),
io:format("Ndump:~p~n", [Ndump]),
FineDump = Ndump--"\">>",
io:format("FineDump:~p~n", [FineDump]),
L1 = binary:split(Pars, <<"\r\n">>, [global]),
io:format("L1=~p~n", [L1]),
Check = lists:member(FineDump, L1),
io:format("Check=~p~n", [Check]),
if
Check ->
file:write_file("check.txt", "true\n", [append]);
true ->
file:write_file("check.txt", "false\n", [append])
end.
は、コードの出力です:
10> c(compare).
{ok,compare}
11> compare:comparing().
Numline:1
StringNumline:"1"
StringDump:"<<\"hello\">>"
SubStringDump:"hello\">>"
Ndump:"1hello\">>"
FineDump:"1hello"
L1=[<<"0hello">>,<<"something">>,<<"anyword">>,<<"1hello">>,<<"2exercise">>,
<<"2solution">>,<<"3test">>,<<"new">>,<<"4check">>,<<"4grade">>]
Check=false
ok
私はラインCheck = lists:member(FineDump, L1)
で問題を抱えている私のコードがあります。 1helloはリストのメンバーですが、常に間違っています。間違いがどこにあるのか分かりません。それは機能リストですか:この操作のメンバ?または、文字列がリストのメンバーであるかどうかを調べるための他の方法がありますか?私はErlangで初めてです。
それは動作しますが、おかげでたくさん:) –
私を見てください編集。整数とバイナリを連結するためだけに、この 'string:substr'と' io:format'をすべて行う必要はありません(バイナリに二重引用符または山括弧が含まれている場合は間違っています)。 – Dogbert
偉大な解決策は、私は自分のコードを書くために多くの方法を試していたので、私はこれを行いました。それは働いたので、私はそれに満足していた。しかし、あなたの道ははるかに良いです。どうもありがとう :) –