【问题标题】:Reading swift message MT940 [closed]阅读 Swift 消息 MT940 [关闭]
【发布时间】:2014-06-18 21:28:09
【问题描述】:

我正在阅读 Swift 消息 MT940,它读起来很好,直到我遇到一个小问题。下面是正在阅读的消息的sn-p;

:61:140423C207430136,99S103R802316/103//3242612
3000024426
:86:/CODETYPTR/027
CBNINGLA
DBLNNGLA
SETL/1404230804+0000
:61:140423C50000000,S202TRONGNCASHSWAP1C//3242830
3000024426
:86:/CODETYPTR/001
FCMBNGLA
NONREF
SETL/1404230918+0000

这是我用来阅读这一行的代码;

if (line.StartsWith(":61:"))
    {
     string strdateE = line.Substring(4, 6);
     string dt = strdateE.Substring(0, 2) + "/" + strdateE.Substring(2, 2) + "/" + strdateE.Substring(4, 2);

inflow940.VALUE_DATE = DateTime.ParseExact(dt, "yy/MM/dd", null);
inflow940.DR_CR = line.Substring(10, 1);int sIndex = line.IndexOf('S');
inflow940.AMOUNT = decimal.Parse(line.Substring(11, sIndex - 11).Replace(',', '.'));
inflow940.TRXNTYPE_IDCODE = line.Substring(line.IndexOf('S'), 4);

     string refr = line.Split(new string[] { "//" }, StringSplitOptions.None)[0];

     string reft = "";

     if (refr.Contains("S202"))
         {
             reft = refr.Replace("S202", "//");
         }
     if (refr.Contains("S103"))
         {
             reft = refr.Replace("S103", "//");
         }
     if (refr.Contains("S102"))
         {
             reft = refr.Replace("S102", "//");
         }
     if (refr.Contains("FTRF"))
         {
             reft = refr.Replace("FTRF", "//");
         }

inflow940.REFERENCE = reft.Split(new string[] { "//" }, StringSplitOptions.None)[1];
         pointer = 2;
         }

上面的代码运行良好,但在部署解决方案后,我注意到正在读取的文件可以采用这种格式

:61:140423C7000000000,FTRFNONREF//3242445
3000024426

我的挑战:大多数消息总是带有嵌入在行中的 S202、S103 或 S102,如果我遇到相反的情况,例如下面的这条消息 (FTRF),我该如何修改我的代码来处理那个?

【问题讨论】:

  • 您可以解析字符串并查找 FTRFNONREF 还是使用包含?然后是一个简单的 if/else

标签: c# mt940


【解决方案1】:

stackoverflow 用户Jaco 构建了一个开源库SharpMt940Lib。使用此库,您可以解析 mt940 文件。我建议用这个库测试你的文件。我认为,这使它变得容易得多。

【讨论】:

  • 如果您对图书馆有任何疑问或问题,请给我发送电子邮件(或在此处提问)。
  • 源代码可以在以下位置找到:bitbucket.org/raptux/sharpmt940lib
猜你喜欢
  • 1970-01-01
  • 2013-03-07
  • 2012-12-31
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2012-07-14
相关资源
最近更新 更多