Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.IO;
- namespace ConvertTextTable
- {
- /// <summary>
- /// Converting text-like tables to proper CSV format.
- /// </summary>
- class ConvertTextTableProcedure
- {
- /// <summary>
- /// Path of the source file.
- /// </summary>
- const string sourceFilePath = @"C:\Data\MyTable.txt";
- /// <summary>
- /// Path of the destination file.
- /// </summary>
- const string destinationFilePath = @"C:\Data\Table.csv";
- /// <summary>
- /// Main function of application.
- /// </summary>
- /// <param name="args">Array of input parameters.</param>
- static void Main(string[] args)
- {
- var file = File.ReadAllText(sourceFilePath);
- var searchPattern = @"[A-Za-z0-9/]+(\s|\.)+([a-záéíóöőúüű]+\s+)+([0-9]*\s*)[0-9]+(\.)[0-9]+(\s+)[0-9]+(\.)[0-9]+"
- + @"(\s+)([a-záéíóöőúüű]+\s+)*(---|___)";
- var dataLine = Regex.Match(file, searchPattern);
- File.WriteAllText(destinationFilePath,
- (@"identifier; name; first number; second number; third number" + Environment.NewLine));
- while (dataLine.Success)
- {
- var identifier = Regex.Match(dataLine.Value, @"[A-Za-z0-9/]+");
- var startPosition = identifier.Index + identifier.Length;
- var nameFirstPart = Regex.Match(dataLine.Value.Substring(startPosition), @"([a-záéíóöőúüű]+\s+?)+");
- startPosition += nameFirstPart.Index + nameFirstPart.Length;
- var firstNumber = Regex.Match(dataLine.Value.Substring(startPosition), @"\s[0-9]+\s+?");
- startPosition += firstNumber.Index + firstNumber.Length;
- var secondNumber = Regex.Match(dataLine.Value.Substring(startPosition), @"[0-9]+(\.)[0-9]+\s+?");
- startPosition += secondNumber.Index + secondNumber.Length;
- var thirdNumber = Regex.Match(dataLine.Value.Substring(startPosition), @"[0-9]+(\.)[0-9]+\s+?");
- startPosition += thirdNumber.Index + thirdNumber.Length;
- var nameLastPart = Regex.Match(dataLine.Value.Substring(startPosition), @"([a-záéíóöőúüű]+\s)+");
- var name = nameFirstPart.Value + nameLastPart.Value;
- var tableSeparator = @";";
- File.AppendAllText(destinationFilePath,
- (identifier.Value
- + tableSeparator
- + name
- + tableSeparator
- + firstNumber.Value
- + tableSeparator
- + secondNumber.Value
- + tableSeparator
- + thirdNumber.Value
- + Environment.NewLine),
- Encoding.UTF8);
- dataLine = dataLine.NextMatch();
- }
- Console.WriteLine("Table conversion has been finished.");
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement