首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StreamReader可从文本文件中读取一行并选择与条件匹配的单词

StreamReader可从文本文件中读取一行并选择与条件匹配的单词
EN

Stack Overflow用户
提问于 2018-07-27 04:02:02
回答 2查看 837关注 0票数 0

我正在用c#编写一个程序,用流读取器读取文本文件。有一行写着“数据集WORK.Test有0个观察值和5个变量”。流阅读器必须读完这一行,并根据观察值的数量进入"if else循环“。。我如何让流阅读器选择0或不是观察值。

代码语言:javascript
复制
System.IO.StreamReader file = new System.IO.StreamReader(@FilePath);
List<String> Spec = new List<String>();
while (file.EndOfStream != true)
{
    string s = file.ReadLine();
    Match m = Regex.Match(s, "WORK.Test has");
    if (m.Success)
    {
        // Find the number of observations  
        // and send an email if there are more than 0 observations.
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-27 04:33:20

您应该修改您的Regex

C# Regex类中,您放在( )中的任何内容都将被捕获到一个组项目中。因此,假设除了数字之外,您的输入字符串与您指定的值类似,您可以使用\d+捕获观察值和变量。

\d -搜索数字。

\d+ -搜索一个或多个数字。

代码语言:javascript
复制
using (FileStream fs = new FileStream("File.txt", FileMode.Open, FileAccess.Read))
{
    using (StreamReader sr = new StreamReader(fs))
    {
        while (!sr.EndOfStream)
        {
            var line = sr.ReadLine();
            var match = Regex.Match(line, @"WORK.Test has (\d+) observations and (\d+) variables");
            if (match.Success)
            {
                int.TryParse(match.Groups[1].Value, out int observations);
                int.TryParse(match.Groups[2].Value, out int variables);
                // Send EMail etc.
            }
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-07-27 04:31:40

我不清楚你想要实现什么。在您的示例中,您想只获取"has“和"obervations”之间的数字吗?为什么不使用Regex?顺便说一句,你提供的是错误的“。匹配任何东西。您应该尝试使用@"WORK\.Test has (.*) observations"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51546676

复制
相关文章

相似问题

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