2016-07-12 10 views
-2

我需要你們的幫助,我有一個自動載入以下信息的txt文件:讀線的時候隨機數

 U 00024791 
    0212-204T2HT 
    Caracas, 12 de Julio  de 2016 
    SAVAKE CA 
    Estimado SCARLET 
    D  1089274    101548895    444.825,68 BS 
    D  6555555    101548895    444.825,68 BS 
    D  9563221    101548895    444.825,68 BS 
FIN SCARLET SANCHEZ 

我需要在控制檯中只打印與d

開始的行

林嘗試,如果statment或使用,但我真的不明白

 string[] readText = File.ReadAllLines(@"p:\CARTAP1.txt"); 
     string input = readText[5]; 
     string result = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[0]; 

     foreach (string s in readText) 
     { 
      if (result == "D") 
      { 
       var cont = 0; 
       //string cont = readText[1]; 
       Console.WriteLine(cont); 
      } 
      Console.WriteLine(s); 
     } 

注意:以d開頭的行並不總是3的時候,變化的,這意味着它可能會超過10行從D開始,在這種情況下,我將不得不在控制檯上打印所有這些文件。

+0

我懷疑是d之間的標籤數字字段...如果是這樣的話應該是input.Split('\ t')不是輸入.Split(new char [] {''} ... –

+0

你有什麼你的答案作爲你的'NOTE'例子的一部分,有一些叫'startswith'的查找該函數..如果你不熟悉,那麼使用'SubString函數'什麼似乎是問題..?你甚至可以調試代碼來查看什麼''包含..?也看看在適當的令牌/分隔符分裂也看看在你的循環使用'繼續'關鍵詞以及..這其實很簡單.. – MethodMan

+0

謝謝,我會檢查!它已被調試,幷包含所有行 – Hans

回答

1

試試這個:

string[] readText = File.ReadAllLines(@"p:\CARTAP1.txt"); 
foreach (string s in readText) 
{ 
    if (s.Trim().StartsWith("D")) 
    { 
     Console.WriteLine(s); 
    } 
} 

而且使用LINQ:

string[] readText = File.ReadAllLines(@"p:\CARTAP1.txt"); 
foreach (string s in readText.Select(s => s.Trim()).Where(s => s.StartsWith("D"))) 
{ 
    Console.WriteLine(s); 
} 
+0

感謝您幫助新手出來一些易於閱讀和易於理解的代碼。 –

+0

是的,我是一個新手!謝謝凱文 – Hans