[英]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.