2017-04-07 20 views
-1

#查找線兩條線的計算,我需要打印第一和與B.c。與startet乙

我有一個看起來像這樣的文件,並需要數開始最後一行的搜索功能在B之後,因爲那是第二個。我想計算之間的第二個跨度。

對不起的英語很抱歉。

Start File 
AXCT XCTrack 0.6.0 - translations: 2017-03-14 17:49:58 on HUAWEI GEM-702L 6.0 
HPPLTPILOT:Kay Starkermann 
HOSITSite:Schwängimatt 
HPCCLCOMPETITION CLASS:FAI-3 (PG) 
HPGTYGLIDERTYPE:SKYWALK Spice 
HODTM100GPSDATUM:WGS-84 
HFALG:GEO 
HFDTE060417 
LXCTDEVICE eyJjYXBhYmlsaXRpZXMiOnsibWVtQ2xhc3MiOjI1NiwibWVtTGFyZ2VDbGFzcyI6M 
LXCTDEVICE jU2LCJuYW4iOnRydWV9LCJkZXZpY2UiOnsiYW5kcm9pZElkIjoiMzRhM2Q1MzBhZm 
LXCTDEVICE I4YmViYyIsImJvYXJkIjoiR0VNLTcwMkwiLCJidWlsZElkIjoiSFVBV0VJR0VNLTc 
LXCTDEVICE wMkwiLCJjcHVBQkkiOiJhcm02NC12OGEiLCJjcHVBQkkyIjoiIiwiZGV2aWNlU3Ry 
LXCTDEVICE aW5nIjoiSFVBV0VJIEdFTS03MDJMIDYuMCIsImRpc3BsYXkiOnsiaCI6MTg0OCwib 
LXCTDEVICE W0iOjE1Ljc0ODAzMiwidyI6MTIwMH0sImZpbmdlcnByaW50IjoiSFVBV0VJL0dFTS 
LXCTDEVICE 03MDJML0hXR2VtaW5pOjYuMC9IVUFXRUlHRU0tNzAyTC9DMjA5QjIwMzp1c2VyL3J 
LXCTDEVICE lbGVhc2Uta2V5cyIsImhhcmR3YXJlIjoiaGkzNjM1IiwibWFudWZhY3R1cmVyIjoi 
LXCTDEVICE SFVBV0VJIiwicHJvZHVjdCI6IkdFTS03MDJMIiwic2RrIjoyM30sInhjdHJhY2siO 
LXCTDEVICE nsidmVyc2lvbkNvZGUiOjYzLCJ2ZXJzaW9uTmFtZSI6IjAuNi4wIC0gdHJhbnNsYX 
LXCTDEVICE Rpb25zOiAyMDE3LTAzLTE0IDE3OjQ5OjU4In19 
LXCTSENSOR Sensors: SENSOR_BT, external GPS:true, external baro:true, intern 
LXCTSENSOR al baro:false 
LXCTEARTHMODEL FAI_SPHERE 
B1505404717336N00740471EA0101001091 
B1505414717336N00740472EA0101001091 
B1505424717335N00740472EA0101001091 
B1505434717336N00740472EA0101001090 
B1505444717336N00740472EA0100901090 
B1505454717336N00740471EA0100901091 
B1505464717336N00740471EA0101001091 
B1505474717336N00740471EA0101001091 
B1505484717336N00740471EA0101001091 
B1505494717336N00740471EA0101001091 
B1505504717336N00740471EA0101001091 
B1505514717336N00740471EA0101001091 
End File 
+0

您是否嘗試過逐行讀取文件?這些「B」值是否在他們自己的行上?......實際上以「B」開始的行?他們會一直與其他線路相連嗎?等... –

回答

0

更新:我已經修改了答案,因爲你明確的文件格式

你可以嘗試與一個「B」開頭,後面跟着的α-一個詞相匹配的正則表達式數字字符。我不是偉大的他們,但這似乎這樣的伎倆:

var matches = Regex.Matches(input, @"([B][0-9][A-Za-z0-9]\w+)"); 

// This says find all matches that: 
// [B]   : starts with the letter 'B' 
// [0-9]  : followed by a number 
// [A-Za-z0-9] : followed by any alpha-numeric characters 
// \w+   : and get the whole word 

下面是使用它的一種方法:

var input = File.ReadAllText(filePath); 

var matches = Regex.Matches(input, @"([B][0-9][A-Za-z0-9]\w+)"); 

foreach(var match in matches) 
{ 
    Console.WriteLine(match); 
} 

輸出:

enter image description here

+0

謝謝:)它的工作 – Nero8Eye

+0

太棒了!標記它作爲答案總是讚賞。 :) –

+0

我有一個新的問題,我想導出一個datagridview覆蓋和我發現的腳本給了我一個錯誤:( – Nero8Eye

0

正則表達式是一個很好的方式來讀取文件,捕獲您需要的信息,然後存儲在一個列表中。

MatchCollection matchList = Regex.Matches(Content, Pattern); 
var list = matchList.Cast<Match>().Select(match => match.Value).ToList(); 

我發現這個here這表明你將如何使用正則表達式來捕獲在列表中的信息和存儲。

把一個快速的模式放在一起,這使得長度總是相同的假設。

B(?<Seconds>[\d\w]{34})\s

你可以找到一個測試here

爲了再拿到第一個和最後一場比賽,它只是在訪問列表中的第一個和最後一個項目。

可以找到一個例子here