尝试改变具有几个管道的函数中的字符串会返回空数组



对不起,标题很糟糕,这就是问题所在。

我正在

一本正在学习的书中做一个练习,希望我:

包含大量单词的列表中,仅找到以"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的数据是

(只是从文件中读取的一串单词.txt"

"adultnnaeroplanennairnnaircraft Carriernnairforcennairportnnalbumnnalphabetnnapplennarmnnarmynnbabynnbabynnbackpacknnballoonnnbananannbanknnbarbecuennbathroomnnbathtubnnbednnbednnbeennbiblennbiblennbirdnnbombnnbooknnbossnnbottlennbowlnnboxnnboynnbrainnnbridgennbutterflynnbuttonnncappuccinonncarnncar-racenncarpetnncarrotnncavennchairnnchess Boardnnchiefnnchildnnchiselnnchocolatesnnchurchnnchurchnncirclenncircusnncircusnnclocknnclownnncoffeenncoffee-shopnncometnncompact Discnncompassnncomputernncrystalnncupnncyclenndata Basenndesknndiamondnndressnndrillnndrinknndrumnndungnnearsnnearthnneggnnelectricitynnelephantnnerasernnexplosivenneyesnnfamilynnfannnfeathernnfestivalnnfilmnnfingernnfirennfloodlightnnflowernnfootnnforknnfreewaynnfruitnnfungusnngamenngardennngasnngatenngemstonenngirlnnglovesnngodnngrapesnnguitarnnhammernnhatnnhieroglyphnnhighwaynnhoroscopennhorsennhosennicennice-creamnninsectnnjet fighternnjunknnkaleidoscopennkitchennnknifennleather jacketnnlegnnlibrarynnliquidnnmagnetnnmannnmapnnmazennmeatnnmeteornnmicroscopennmilknnmilkshakennmistnnmoney $$$$nnmonsternnmosquitonnmouthnnnailnnnavynnnecklacennneedlennonionnnpaintBrushnnpantsnnparachutennpassportnnpebblennpendulumnnpeppernnperfumennpillownnplanennplanetnnpocketnnpost-officennpotatonnprinternnprisonnnpyramidnnradarnnrainbownnrecordnnrestaurantnnriflennringnnrobotnnrocknnrocketnnroofnnroomnnropennsaddlennsaltnnsandpapernnsandwichnnsatellitennschoolnnsexnnshipnnshoesnnshopnnshowernnsignaturennskeletonnnslavennsnailnnsoftwarennsolidnnspace Shuttlennspectrumnnspherennspicennspiralnnspoonnnsports-carnnspot Lightnnsquarennstaircasennstarnnstomachnnsunnnsunglassesnnsurveyornnswimming Poolnnswordnntablenntapestrynnteethnntelescopenntelevisionnntennis racquetnnthermometernntigernntoiletnntonguenntorchnntorpedonntrainnntreadmillnntrianglenntunnelnntypewriternnumbrellannvacuumnnvampirennvideotapennvulturennwaternnweaponnnwebnnwheelchairnnwindownnwomannnwormnnx-raynn"

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)

最新更新