Как преобразовать данные в файл .txt для электронных денежных переводов - PullRequest
1 голос
/ 16 декабря 2011

Таким образом, в настоящее время наше программное обеспечение ERP / PSA создает файл EFT (Electronic Fund Transfer) .txt, содержащий информацию о банке и банке сотрудника, которая затем отправляется в банк.

Проблема заключается в следующем форматек которому в настоящее время создается файл EFT, соответствует стандарту США и не соответствует стандартам канадских банков.Но у меня есть требуемый стандартный формат канадского банка.

Формат файла - это количество столбцов в файле и количество символов в нем (если данные для столбца не достигают количества символов).оно заполнено пробелами).

То есть

1011234567Joe,Bloggs      1234567

И скажем, например, я пытаюсь преобразовать в канадский стандарт

A101Joe,Bloggs    1234567   1234567

Где, например, "A"необходимо добавить в первую строку записи.

Мне просто интересно, как выполнить такую ​​задачу в C #

Т.е.

Читать в текстовом файле.Строка за строкой анализ данных в терминах начала и конца символов. Присвоение значений переменным. Перестройте новый файл с этими переменными с другим порядком и дополнительными данными

Ответы [ 3 ]

1 голос
/ 16 декабря 2011

У меня нет открытой IDE, так что мой синтаксис может быть немного неправильным, но я постараюсь указать вам правильное направление. В любом случае, какое удовольствие было бы дать вам прямое решение?

Сначала вы захотите получить список строк:

IEnumerable<string> lines = text.Split('\n');

Вы сказали, что столбцы не имеют разделителей, а имеют фиксированную ширину, но вы не упомянули, где определены размеры столбцов. Как правило, вы хотите извлечь текст каждого столбца с помощью

colText = line.Substring(startOfColumn, lengthOfColumn);

Для каждого столбца вам нужно будет рассчитать startOfColumn и lengthOfColumn, в зависимости от положения и длины столбцов.

Надеюсь, это достаточно хорошая основа для того, чтобы начать.

1 голос
/ 16 декабря 2011
var lines = File.ReadAllLines(inputPath);
var results = new List<string>();
foreach (var line in lines)
{
    results.Add(string.Format("A{0}", line));
}
File.WriteAllLines(outputPath, results.ToArray()); 
1 голос
/ 16 декабря 2011

Я думаю, что вам лучше всего создать класс для хранения логических данных, присутствующих в файле, и иметь методы в этом классе для анализа данных из заданного формата и сохранения их обратно в заданном формате.

Например, предположим следующий класс:

public class EFTData
{
    public string Name { get; set; }
    public string RoutingNumber { get; set; }
    public string AccountNumber { get; set; }
    public string Id { get; set; }

    public void FromUSFormat(string sLine)
    {
        this.Id = sLine.Substring(0, 3);
        this.RoutingNumber = sLine.Substring(3, 7);
        this.Name = sLine.Substring(10, 20);
        this.AccountNumber = sLine.Substring(30, 7);
    }
    public string ToCanadianFormat()
    {
        var sbText = new System.Text.StringBuilder(100);

        // Note that you can pad or trim fields as needed here
        sbText.Append("A");
        sbText.Append(this.Id);
        sbText.Append(this.RoutingNumber);
        sbText.Append(this.AccountNumber);

        return sbText.ToString();
    }
}

Затем вы можете прочитать из файла США и записать в канадский файл следующим образом:

        // Assume there is only a single line in the file
        string sLineToProcess = System.IO.File.ReadAllText("usin.txt");

        var oData = new EFTData();
        // Parse the us data
        oData.FromUSFormat(sLineToProcess);
        // Write the canadian data
        using (var oWriter = new StreamWriter("canout.txt"))
        {
            oWriter.Write(oData.ToCanadianFormat());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...