簡體   English   中英

從具有不同分隔符的文本文件中提取數據

[英]Extracting data from text file with differing delimiters

我有一個需要拆分為數組的文本文件,數組的每個元素將包含 1 個人的數據。 然后,我將使用 Regex (C#) 提取該人的所有數據。 我遇到的問題是匹配每個人的開頭,因為文件中的模式發生了變化。 見下文:

數據的簡化版本如下:

地址 FirstName \r\nSurname NHS No Age = 44\r\n
地址 FirstName\r\n 姓 NHS No 12345\r\n
地址 FirstName\r\n Surname NHS No Age = 35\r\n
地址 FirstName \r\n姓 NHS No 54321\r\n

如您所見,文件中有換行符,因此 StreamReader.Readline() 方法可能不起作用。 地址名稱和姓氏字段是固定長度字段,我可以使用 substring 提取這些字段。 一旦我對每個人的開始/結束有了一致的標記,我就可以分成一組人。

我需要使用 Regex.Replace 添加一個人開始標記,然后使用此標記拆分為數組。 我將不勝感激。

有些人在遇到問題時會想“我知道,我會使用正則表達式”。 現在他們有兩個問題。 傑米·扎溫斯基

您確信正則表達式會使您的代碼更易於編寫、閱讀和維護嗎?

考慮改用String.Split()

從您的評論來看,無論格式的細微差別如何,每一行似乎都代表一個實體。 首先,您可以逐行讀取文件,並使用String.Split將每一行拆分為單詞:

using (StreamReader sr = new StreamReader("addresses.txt")) 
{
     string line;
     // Read and display lines from the file until the end of 
     // the file is reached.
     while ((line = sr.ReadLine()) != null) 
     {
         string[] tokens = line.Split(' ');

         // variant 1: Address FirstName Surname NHS No //Person1 Age = 44
         // variant 2: Address FirstName Surname NHS No //person 2 12345

         Console.Writeline("Address: ", tokens[0]);
         Console.Writeline("First name: ", tokens[1]);

         // etc.
     }
}

暫無
暫無

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

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