簡體   English   中英

C# 在文本文件中搜索字符串並返回不同的字符串

[英]C# Search for string in text file and return a different string

我有許多格式如下的文本文件:

tag(1008)<EX-->
------- Critical Item -------
Point taken at 06:00
NAME: OUTPUT_EXH_1_PLAN14_POINT3
Y       -43.842     -43.850       0.100       0.100       0.008       +     

tag(1009)<EX-->
------- Critical Item -------
Point taken at 09:00
NAME: OUTPUT_EXH_1_PLAN14_POINT4
Y       -43.825     -43.850       0.100       0.100       0.025       ++    

tag(1010)<EX-->
------- Critical Item -------
Y = ITEM 4
NAME: OUTPUT_EXH_1_PLAN14
Y       -43.838     -43.850       0.100       0.100       0.012       +     

tag(1011)<EX-->
EXH_1 Zero hole Cast to machine location
NAME: OUTPUT_EXH_1_CIRC30
Z         0.041       0.000       0.150       0.150       0.041       ++   
X        -0.035       0.000       0.150       0.150      -0.035       -     

tag(1012)<EX-->
Point taken at 06:00
NAME: OUTPUT_EXH_1_PLAN15_POINT1
Y       -23.555     -23.500       0.100       0.100      -0.055       ---

實際的文本文件可能有幾百行(但少於 1000 行)。 以上只是部分行的示例。 我是 C# 的新手,我在網上搜索了幾個小時來了解如何做我想做的事情,並找到了許多不同的方法……有些看起來很簡單……有些看起來很復雜……我不知道哪種方法對我的應用程序來說“更好”。 無論如何,我發現的所有內容要么需要調整以做我需要的事情,要么只顯示我需要的部分代碼,並假設我有足夠的技能來弄清楚其余部分。 有人可以通過發布一個完整的工作示例來幫助我。

我需要的...

如果上面的文本文件是“D:\\myFile.txt”

我想搜索字符串“tag(1010)”

然后我想在字符串“tag(1010)”之后得到“Y”之后的第一個數字

所以我得到的數字是“myNumber = -43.838”

據我所知:

var myString = File.ReadAllLines("D:\myFile.txt")
    .SkipWhile(myString => !myString.Contains("tag(1010)<EX-->"))
    .Skip(1) // optional
    .TakeWhile(myString => !myString.Contains("tag(1011)<EX-->h"));

然后我打算添加更多的代碼來從 myString 中提取“-43.838”......但當然上面的代碼不起作用。

    string myNumber = input.Split(new string[] {Environment.NewLine},StringSplitOptions.RemoveEmptyEntries)                                           
                           .SkipWhile((str) => !str.Trim().StartsWith("tag(1010)"))
                           .FirstOrDefault((str) => str.Trim().StartsWith("Y"))
                           .Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries)[1];

替換input.Split input

這將按換行符拆分,跳過所有行,直到找到 tag(1010),查找並返回以 Y 開頭的下一行,在空格上拆分並返回第二個項目[1]因為第一個將是我們拆分的 Y。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM