1

Swift メッセージ MT940 を読んでいます。わずかな問題が発生するまで問題なく表示されます。以下は、現在読んでいるメッセージの抜粋です。

: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) のように、反対の何かに遭遇した場合、それを処理するためにコードを変更するにはどうすればよいですか?

4

1 に答える 1