I have a file that looks something like this:
|29923C|SomeGuy,NameHere1     |00039252|042311|Some Address Info Here |
|47422K|SomeGuy,NameHere2     |00039252|042311|Some Address Info Here |
|98753D|SomeGuy,NameHere3     |00039252|042311|Some Address Info Here |
|29923C|SomeGuy,NameHere4     |00039252|042311|Some Address Info Here |
|47422K|SomeGuy,NameHere5     |00039252|042311|Some Address Info Here |
I need to break the file up into multiple files based on the first 6 characters starting in position 2.
File 1 named 29923c.asc:
|29923C|SomeGuy,NameHere1     |00039252|042311|Some Address Info Here |
|29923C|SomeGuy,NameHere4     |00039252|042311|Some Address Info Here |
File 2 named 47422K.asc:
|47422K|SomeGuy,NameHere5     |00039252|042311|Some Address Info Here |
|47422K|SomeGuy,NameHere2     |00039252|042311|Some Address Info Here |
File 3 named 9875D.asc:
|98753D|SomeGuy,NameHere3     |00039252|042311|Some Address Info Here |
I don't know what will be in the file before the program gets it, just the format. The 6 digits will change depending on the customer. I don't know what they will be.
The only thing I know is the format.
Can anyone give me a suggestion as to how to dynamically obtain\maintain this information so that I can parse it out into individual files?
I suggest using a parser such a the TextFieldParser class.
You could read the data into memory, sort it using the first field then write out individual files.
List<string> lines ; // load lines form file
Dictionary<string,List<string>> dic = new Dictionary<string,List<string>>();
foreach(string line in lines) 
{
    string key = line.Split('|')[0];
    if(!dic.ContainsKey(key))
        dic.Add(key,new List<string>{line});
    else 
        dic[key].Add(line) 
}
foreach(var pair in dic) 
{
    //create file and store there pair.Value   
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With