循环遍历从BizTalk消息中获取的字符串变量中的值

时间:2016-05-17 14:24:37

标签: c# biztalk biztalk-2013

我从BizTalk消息中提取一个看起来像这个字符串的值:

UPX:300184-SEQNO:1-401:SHER-410:NONE-450:DEBR-480:NONE

我需要查找我已经完成的'DEBR'的每次出现,然后为每次出现输入一个循环并执行以下操作:

根据UPX + SEQNO(填充前3个字符)+紧接在DEBR之前的数字建立一个帐号,在这种情况下为450,所以这里的帐户将是 300184001450。

最多可能有4个DEBR,每个我都需要建立一条新消息并进行一些服务呼叫。

目前我调用了一个C#实用程序来获取DEBR的数量,所以我知道需要多少次循环来构建帐户并进行调用。

我的问题是,如果有倍数,那么知道我已经处理了哪个DEBR的最佳方法是什么,因为这是从消息中获取的字符串变量?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用正则表达式提取所需内容。从这开始:

UPX\:(\d+)-SEQNO\:(\d+).+?(\d+):DEBR

例如,

var match = 
  new Regex(@"UPX\:(\d+)-SEQNO\:(\d+).+?(\d+):DEBR").
    Match("UPX:300184-SEQNO:1-401:SHER-410:NONE-450:DEBR-480:NONE");

var accountNumber = string.Format("{0}{1}{2}", 
  match.Groups[1].Value, 
  match.Groups[2].Value.PadLeft(3, '0'), 
  match.Groups[3].Value);