例如,我有一个带有数字和逗号分隔行的txt文件。
4324,1dd3,444
4324,1 3,444
4324,1as 3,442
我有一个函数,它接受一个字符串作为参数,我希望检查每一行是否该字符串等于该行的第二个"word“,因此在第一行中,将是"1dd3”。如果该参数与单词匹配,我希望将行的第三个单词添加到字符串列表中(或者以其他方式将其保存在代码中)。
在C#中,我将简单地遍历列表,并在逗号上使用如下分隔符
while(reader.Peek > 0) //while txt file still has lines left to read
{
split the row...
compare it to argument
add to list of strings
}但是我对F#相当陌生,在这里找不到正确的语法和方法,任何帮助都将不胜感激。
发布于 2013-12-28 14:56:08
首先,您可以尝试确定要操作的适当的数据结构,以及2)如果已经有预定义的库函数来执行所需的操作。在这种情况下,我不会浪费时间逐行读取文件,而是一次性读取文件。所以这是一个可以操作的数组。
该函数需要对数组的所有元素应用一个选择器,比如过滤器和投影的组合。所以,如果您只对第一个事件感兴趣,那么它就是Array.pick/Array.tryPick,或者检索谓词为true的所有实例的Array.choose。现在,我们所做的就是用一个保卫子句进行模式匹配,以检查您的情况。
let findTextInFile nameOfFile txtToSearch =
System.IO.File.ReadAllLines nameOfFile
|> Array.choose (fun s ->
match s.Split ',' with
| [| _; y; z |] when y = txtToSearch -> Some z
| _ -> None )
findTextInFile @"c:\temp\xxx" "1dd3"
// val it : string [] = [|"444"|]https://stackoverflow.com/questions/20815021
复制相似问题