使用String.Contains的NullReferenceException

Jac*_*eja 4 f#

我不知道为什么我在以下代码的List.filter部分得到了Exception:

pdfLinks |> List.filter(fun x -> x.Contains("shop")) |> List.iter (printfn "%s")
Run Code Online (Sandbox Code Playgroud)

pdfLinks的类型为"字符串列表",并且填充了大量包含"shop"一词的字符串.

它在带有虚拟列表的F#Interactive中正常工作.原始的一个是通过解析HTML文件生成的,但是通过手表检查它显示它具有所需类型的所需值.

知道可能会发生什么吗?

谢谢!

Jac*_* P. 7

尝试添加一个电话System.String.IsNullOrEmpty到您的List.filter,看看它是否解决了问题:

pdfLinks
|> List.filter(fun x ->
    (not <| System.String.IsNullOrEmpty x) &&
    x.Contains("shop"))
|> List.iter (printfn "%s")
Run Code Online (Sandbox Code Playgroud)

  • 从"外部世界"获取输入时,通常最好映射到选项类型,并适当地处理它们.在你的情况下,获取pdf链接列表并映射到`string option`,然后你的其余代码将自动工作(因为你被迫处理它). (2认同)