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

Looping through values in a string variable taken from a BizTalk message

我从 BizTalk 消息中提取一个类似于以下字符串的值:

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

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

根据 UPX + SEQNO(填充前 3 个字符)+ DEBR 之前的数字构建帐号,在本例中为 450,因此此处的帐号为 300184001450.

最多可能有 4 个 DEBR,对于每个 DEBR,我都必须构建一条新消息并进行一些服务调用。

目前我调用 C# 实用程序来获取 DEBR 的数量,因此我知道我需要循环创建帐户和调用多少次。

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

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

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);