我从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的最佳方法是什么,因为这是从消息中获取的字符串变量?
答案 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);