首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何逐行从简单文本中获取数据

如何逐行从简单文本中获取数据
EN

Stack Overflow用户
提问于 2022-10-28 10:33:45
回答 1查看 68关注 0票数 0

我正在尝试从文本中提取数据。这是更大的文本。为了更好的理解。我有一个简单的类测试结果,那就是枚举。

代码语言:javascript
复制
class Test{

 private Result result;
 
 public Test(string text){
  this.Result = FindProblem(text);
 }
......

public enum Result
    {
        SUCCESS = 1,
        FAIL = 2,
        NONE = 3

    }


 }

然后我有短信:

今天01:05:(NAME)备份失败--操作遇到错误。(姓名) 备份失败:找不到文件(名称) DISK_OPEN_ERROR 今天01:04:(名称)成功备份的42,73 MB (压缩为7,32 MB)(持续时间:1分钟) 今天00:59:(名称)成功备份支持的3,41 GB (压缩到379,17 MB)。(持续时间:4分钟)

我希望每一行返回一个测试对象,结果如下:结果:失败的结果:成功的

方法,用于从文本返回所有对象。

代码语言:javascript
复制
public Result FindResult(string text)
        {
            var splitText = text.Split("\n").ToList();
            Result r = Result.NONE;
            foreach (var item in splitText)
            {
                if (item.Contains("Failed"))
                {
                    r = Result.FAIL;
                }
                else
                {
                    r = Result.SUCCESS;
                }
            }
            return r;
        }

但它只返回结果成功。预期产出

代码语言:javascript
复制
  result:FAIL
  result:SUCCESS
  result:SUCCESS
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-28 11:18:14

您可以在至少两个换行符上拆分,然后使用Select映射列表中的项,并检查其中是否包含“失败”

如果是,则返回Result.FAIL,否则返回Result.SUCCESS,因此函数的返回类型为List<Result>

代码语言:javascript
复制
class Test
{
    private Result result;
    public enum Result
    {
        SUCCESS = 1,
        FAIL = 2,
        NONE = 3    
    }

    public List<Result> FindResult(string text)
    {
         return Regex
        .Split(text, @"\r?\n\s*\r?\n")
        .Select(s => s.Contains("Failed") ? Result.FAIL : Result.SUCCESS)
        .ToList();            
    }
}

然后可以循环返回列表中的项。

代码语言:javascript
复制
Test test = new Test();
var results = test.FindResult(input);
foreach(var r in results) {
    Console.WriteLine(r);
}

输出

代码语言:javascript
复制
FAIL
SUCCESS
SUCCESS

看一个C#演示

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

https://stackoverflow.com/questions/74234107

复制
相关文章

相似问题

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