循环遍历取自 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);
我从 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);