很抱歉,标题太糟糕了,这实际上是问题所在。
我正在学习的书中正在做练习,希望我能够:
从很多单词的列表中,仅找到以“ D”开头的单词,将它们大写,然后按从小到大的顺序对它们进行排序。
这是我到目前为止的内容:
defmodule ReadFile do
def findD(contents) do
contents
|> String.split("\n")
|> Enum.filter(fn(word) -> String.starts_with?(word, "D") end)
|> Enum.map(fn(word) -> String.upcase(word) end)
|> Enum.sort(fn(el1, el2) -> String.length(el1) > String.length(el2) end)
end
end
我传递给的数据findD
是
(只是从file.txt中读取的一串单词的字符串`
"adult\n\naeroplane\n\nair\n\naircraft Carrier\n\nairforce\n\nairport\n\nalbum\n\nalphabet\n\napple\n\narm\n\narmy\n\nbaby\n\nbaby\n\nbackpack\n\nballoon\n\nbanana\n\nbank\n\nbarbecue\n\nbathroom\n\nbathtub\n\nbed\n\nbed\n\nbee\n\nbible\n\nbible\n\nbird\n\nbomb\n\nbook\n\nboss\n\nbottle\n\nbowl\n\nbox\n\nboy\n\nbrain\n\nbridge\n\nbutterfly\n\nbutton\n\ncappuccino\n\ncar\n\ncar-race\n\ncarpet\n\ncarrot\n\ncave\n\nchair\n\nchess Board\n\nchief\n\nchild\n\nchisel\n\nchocolates\n\nchurch\n\nchurch\n\ncircle\n\ncircus\n\ncircus\n\nclock\n\nclown\n\ncoffee\n\ncoffee-shop\n\ncomet\n\ncompact Disc\n\ncompass\n\ncomputer\n\ncrystal\n\ncup\n\ncycle\n\ndata Base\n\ndesk\n\ndiamond\n\ndress\n\ndrill\n\ndrink\n\ndrum\n\ndung\n\nears\n\nearth\n\negg\n\nelectricity\n\nelephant\n\neraser\n\nexplosive\n\neyes\n\nfamily\n\nfan\n\nfeather\n\nfestival\n\nfilm\n\nfinger\n\nfire\n\nfloodlight\n\nflower\n\nfoot\n\nfork\n\nfreeway\n\nfruit\n\nfungus\n\ngame\n\ngarden\n\ngas\n\ngate\n\ngemstone\n\ngirl\n\ngloves\n\ngod\n\ngrapes\n\nguitar\n\nhammer\n\nhat\n\nhieroglyph\n\nhighway\n\nhoroscope\n\nhorse\n\nhose\n\nice\n\nice-cream\n\ninsect\n\njet fighter\n\njunk\n\nkaleidoscope\n\nkitchen\n\nknife\n\nleather jacket\n\nleg\n\nlibrary\n\nliquid\n\nmagnet\n\nman\n\nmap\n\nmaze\n\nmeat\n\nmeteor\n\nmicroscope\n\nmilk\n\nmilkshake\n\nmist\n\nmoney $$$$\n\nmonster\n\nmosquito\n\nmouth\n\nnail\n\nnavy\n\nnecklace\n\nneedle\n\nonion\n\npaintBrush\n\npants\n\nparachute\n\npassport\n\npebble\n\npendulum\n\npepper\n\nperfume\n\npillow\n\nplane\n\nplanet\n\npocket\n\npost-office\n\npotato\n\nprinter\n\nprison\n\npyramid\n\nradar\n\nrainbow\n\nrecord\n\nrestaurant\n\nrifle\n\nring\n\nrobot\n\nrock\n\nrocket\n\nroof\n\nroom\n\nrope\n\nsaddle\n\nsalt\n\nsandpaper\n\nsandwich\n\nsatellite\n\nschool\n\nsex\n\nship\n\nshoes\n\nshop\n\nshower\n\nsignature\n\nskeleton\n\nslave\n\nsnail\n\nsoftware\n\nsolid\n\nspace Shuttle\n\nspectrum\n\nsphere\n\nspice\n\nspiral\n\nspoon\n\nsports-car\n\nspot Light\n\nsquare\n\nstaircase\n\nstar\n\nstomach\n\nsun\n\nsunglasses\n\nsurveyor\n\nswimming Pool\n\nsword\n\ntable\n\ntapestry\n\nteeth\n\ntelescope\n\ntelevision\n\ntennis racquet\n\nthermometer\n\ntiger\n\ntoilet\n\ntongue\n\ntorch\n\ntorpedo\n\ntrain\n\ntreadmill\n\ntriangle\n\ntunnel\n\ntypewriter\n\numbrella\n\nvacuum\n\nvampire\n\nvideotape\n\nvulture\n\nwater\n\nweapon\n\nweb\n\nwheelchair\n\nwindow\n\nwoman\n\nworm\n\nx-ray\n\n"
在iex
做
{ :ok, fileContents } = File.read("sample.txt")
ReadFile.findD(fileContents)
哪个返回 []
我不确定为什么,我也不知道如何调试pipeline
我尝试插入的
|> IO.puts
在管道中的每个调用之后,但这只会导致错误。任何帮助将非常感谢。
如果您提供的单词列表是您实际使用的单词列表,那么问题在于没有以该单词开头的单词,"D"
那么[]
正确的结果就是。
如果要以小写字母开头的单词,"d"
则必须替换此行:
Enum.filter(fn(word) -> String.starts_with?(word, "D") end)
和:
Enum.filter(fn(word) -> String.starts_with?(word, "d") end)
如果要同时检查两者,可以执行以下操作:
Enum.filter(fn(word) -> String.at(word, 0) in ["d", "D"] end)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句