user7157732 user7157732 - 3 days ago 5
C# Question

Approach to read a text file

Let's say I have a predefined

List<string> Wellnames = new List<string>(){"CAM1","CAM2","CAM3"};


I have a below text file, which is always in the same format as shown. How do I extract/read the highlighted numbers in the example? i,e. for CAM1 and similarly for CAM2 and CAM3.

here is the excerpt of the file.

1------------------------------------------------------------------------------------------------------------------------------913
ALLOC Allocation/bundle report 10835.0000 Days report step 228, 1 Sep 2015




|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Streamline | | | | | | |
| Bundle | | Surface Rate | Surface Volumes | | | |
|------------------------| Flow |-----------------------------------------------------------------------------------------------------------| Total Reservoir | Pore |PV weighted|
| Start | End | Direct | Oil | Water | Gas | Oil | Water | Gas | Rate | Volume | Pressure |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | SM3/D | Fraction | SM3/D | Fraction | SM3/D | Fraction | SM3 | SM3 | SM3 | RM3/D | Fraction | RM3 | Bar |
| |-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| CAM1 | | 9.13e-001 | | 3.14e+001 | | 9.13e-001 | | 7.55e+004 | 1.50e+005 | 7.55e+004 | 3.26e+001 | 1.06e+000 | 2.29e+005 | 6.21e+001 |
| CAM1 CAM138 | Outflow | 2.82e-001 | 3.09e-001 | 9.63e+000 | 3.07e-001 | 2.82e-001 | 3.09e-001 | 1.99e+004 | 3.88e+004 | 1.99e+004 | 1.00e+001 | 3.07e-001 | 5.96e+004 | 6.17e+001 |
| CAM1 CAM255 | Outflow | 3.34e-002 | 3.66e-002 | 3.00e+000 | 9.57e-002 | 3.34e-002 | 3.66e-002 | 1.86e+004 | 4.05e+004 | 1.86e+004 | 3.07e+000 | 9.40e-002 | 6.00e+004 | 6.30e+001 |
| CAM1 CAM177 | Outflow | 2.12e-001 | 2.32e-001 | 1.10e+001 | 3.50e-001 | 2.12e-001 | 2.32e-001 | 1.94e+004 | 3.66e+004 | 1.94e+004 | 1.13e+001 | 3.46e-001 | 5.68e+004 | 6.13e+001 |
| CAM1 CAM582 | Outflow | 3.17e-001 | 3.47e-001 | 5.72e+000 | 1.82e-001 | 3.17e-001 | 3.47e-001 | 7.77e+003 | 1.33e+004 | 7.77e+003 | 6.10e+000 | 1.87e-001 | 2.14e+004 | 6.13e+001 |
| CAM1 CAM354 | Outflow | 6.87e-002 | 7.53e-002 | 2.05e+000 | 6.53e-002 | 6.87e-002 | 7.53e-002 | 9.80e+003 | 2.04e+004 | 9.80e+003 | 2.14e+000 | 6.56e-002 | 3.07e+004 | 6.34e+001 |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

enter image description here

Answer

this Regex will get you what you need.

@"\|\s+CAM1\s+(\S+)\s+\|\s+\S+\s+\|\s+(\S+)\s+\|\s+\S+\s+\|\s+(\S+)\s+\|\s+\S+\s+\|\s+(\S+)"

just change CAM1 for what you are looking for.

I put together an example for you here

Comments