在文件中搜索单词
Searching for a word in a file
我是erlang新手,想学习一下。我想从一个文件中实现一个简单的词搜索,它应该只显示这个词,如果它在文件中。
我是这样开始的:
readlines(FileName, Word) ->
{ok, File} = file:open(FileName ,[read]),
try get_all_lines(File, Word)
after file:close(File)
end.
get_all_lines(File, Word) ->
io:get_line(File, "") of eof -> [];
if word = searchWord -> display(word);
true -> io:fwrite("no such word in file")
end.
我的方法是否正确,还是应该尝试另一种方法?或者有什么地方可以简单地实现这个?有人可以帮我解决这个问题吗?
P.S。抱歉我的英语不好
我不知道它是否足够好,但您可以尝试读取文件然后将其拆分为单词
并检查列表是否包含您经过的单词
readlines(FileName, Word) ->
{ok, Data} = file:read_file(FileName),
ListOfWords = binary:split(Data, [<<"\n">>, <<" ">>], [global, trim_all]),
case lists:member(Word, ListOfWords) of
true -> Word;
false -> undefined
end.
1> c(test).
{ok,test}
2> test:readlines("/home/tmp/some.txt", <<"Bin">>).
undefined
3> test:readlines("/home/tmp/some.txt",<<"This">>).
<<"This">>
我是erlang新手,想学习一下。我想从一个文件中实现一个简单的词搜索,它应该只显示这个词,如果它在文件中。
我是这样开始的:
readlines(FileName, Word) ->
{ok, File} = file:open(FileName ,[read]),
try get_all_lines(File, Word)
after file:close(File)
end.
get_all_lines(File, Word) ->
io:get_line(File, "") of eof -> [];
if word = searchWord -> display(word);
true -> io:fwrite("no such word in file")
end.
我的方法是否正确,还是应该尝试另一种方法?或者有什么地方可以简单地实现这个?有人可以帮我解决这个问题吗?
P.S。抱歉我的英语不好
我不知道它是否足够好,但您可以尝试读取文件然后将其拆分为单词
并检查列表是否包含您经过的单词
readlines(FileName, Word) ->
{ok, Data} = file:read_file(FileName),
ListOfWords = binary:split(Data, [<<"\n">>, <<" ">>], [global, trim_all]),
case lists:member(Word, ListOfWords) of
true -> Word;
false -> undefined
end.
1> c(test).
{ok,test}
2> test:readlines("/home/tmp/some.txt", <<"Bin">>).
undefined
3> test:readlines("/home/tmp/some.txt",<<"This">>).
<<"This">>