首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >F#从文件中读取和分离文本

F#从文件中读取和分离文本
EN

Stack Overflow用户
提问于 2013-12-28 13:18:52
回答 1查看 564关注 0票数 2

例如,我有一个带有数字和逗号分隔行的txt文件。

4324,1dd3,444

4324,1 3,444

4324,1as 3,442

我有一个函数,它接受一个字符串作为参数,我希望检查每一行是否该字符串等于该行的第二个"word“,因此在第一行中,将是"1dd3”。如果该参数与单词匹配,我希望将行的第三个单词添加到字符串列表中(或者以其他方式将其保存在代码中)。

在C#中,我将简单地遍历列表,并在逗号上使用如下分隔符

代码语言:javascript
复制
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#相当陌生,在这里找不到正确的语法和方法,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-28 14:56:08

首先,您可以尝试确定要操作的适当的数据结构,以及2)如果已经有预定义的库函数来执行所需的操作。在这种情况下,我不会浪费时间逐行读取文件,而是一次性读取文件。所以这是一个可以操作的数组。

该函数需要对数组的所有元素应用一个选择器,比如过滤器和投影的组合。所以,如果您只对第一个事件感兴趣,那么它就是Array.pick/Array.tryPick,或者检索谓词为true的所有实例的Array.choose。现在,我们所做的就是用一个保卫子句进行模式匹配,以检查您的情况。

代码语言:javascript
复制
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"|]
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20815021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档