如何 Return Business Objects Web Intelligence 4.2 中的第 n 个匹配模式
How to Return the nth matching pattern in Business Objects Web Intelligence 4.2
我在 Business Objects 4.2 中创建了以下变量:
2cPat =Pos([Service Item Value];"2C" )
2C Ref #1 =If([2cPat])=0 Then "" Else (Substr([Service Item Value];[2cPat] ;10 ))
2cPat
变量的作用是逐行查看 [Service Item Value]
列并找到以 2C
开头的第一个单词
2C Ref #1
变量的作用是提取以 2C
开头且总长度为 10 个字符的匹配模式。
问题是我每行可以有超过 1 个 2C
匹配项,我需要提取每行中出现的所有匹配项
我的方法是创建另一个名为 2C Ref #2
的变量,但我遇到的问题是如何让代码忽略存储在 [=16= 上的已找到的 2C
]
以下是数据目前的示例:
服务项目价值
2C Ref #1 2C Ref #2 2C Ref #3 2C Ref #4 2C Ref #5
E2E: 2C03144250 ;
Site 1: 2C03144220; Site 2: 2C03144245 Site 2: EAFE03144169 C72/273918 2C03144250 2C03144220
Site 1: 2C03100386; Site 2: 2C03100440 ; End to End: 2C03100444 SITE1: EAGE02897836 ; SITE2: EAFE03100362 C72/266267 2C03100386 2C03100440
ETHWIR000214950, e2e 2C02474833 , 2C02474832 POP - 2C02474831 CX 2C02474833 2C02474832
由于数据样本的长度,我无法使其在堆栈溢出时适合此处,但也请查看我截取的屏幕截图:
我已经尝试并成功了,但是要提取整个字符串,您需要编写许多公式,因为我在 WEBI 中找不到任何循环功能。
解决方案如下:
首先提取第一个 2c
字符串,然后将剩余的字符串存储在新变量中,在第 2 步中提取连续的 2c
字符串,然后将剩余的字符串存储在另一个变量中,您需要这样如果需要,稍后可以转到字符串末尾,您可以连接所有单独的 2c
字符串。
第一个 2c
字符串的公式
=Substr([Column1];Pos([Column1];"2C");10)
现在提取除此字符串之外的剩余字符串:
不包括前 2c 部分的剩余字符串 "remainining
公式:
=Right([Column1];Length([Column1])-(Pos([Column1];"2C")+10))
现在从剩余的字符串中提取下一个 2c 值
=Substr([remaining];Pos([remaining];"2C");10)
现在您需要提取字符串的下一部分,不包括上述 2c 个值。
附上我所做的截图。
试试让我知道
我在 Business Objects 4.2 中创建了以下变量:
2cPat =Pos([Service Item Value];"2C" )
2C Ref #1 =If([2cPat])=0 Then "" Else (Substr([Service Item Value];[2cPat] ;10 ))
2cPat
变量的作用是逐行查看 [Service Item Value]
列并找到以 2C
2C Ref #1
变量的作用是提取以 2C
开头且总长度为 10 个字符的匹配模式。
问题是我每行可以有超过 1 个 2C
匹配项,我需要提取每行中出现的所有匹配项
我的方法是创建另一个名为 2C Ref #2
的变量,但我遇到的问题是如何让代码忽略存储在 [=16= 上的已找到的 2C
]
以下是数据目前的示例:
服务项目价值
2C Ref #1 2C Ref #2 2C Ref #3 2C Ref #4 2C Ref #5
E2E: 2C03144250 ;
Site 1: 2C03144220; Site 2: 2C03144245 Site 2: EAFE03144169 C72/273918 2C03144250 2C03144220
Site 1: 2C03100386; Site 2: 2C03100440 ; End to End: 2C03100444 SITE1: EAGE02897836 ; SITE2: EAFE03100362 C72/266267 2C03100386 2C03100440
ETHWIR000214950, e2e 2C02474833 , 2C02474832 POP - 2C02474831 CX 2C02474833 2C02474832
由于数据样本的长度,我无法使其在堆栈溢出时适合此处,但也请查看我截取的屏幕截图:
我已经尝试并成功了,但是要提取整个字符串,您需要编写许多公式,因为我在 WEBI 中找不到任何循环功能。
解决方案如下:
首先提取第一个 2c
字符串,然后将剩余的字符串存储在新变量中,在第 2 步中提取连续的 2c
字符串,然后将剩余的字符串存储在另一个变量中,您需要这样如果需要,稍后可以转到字符串末尾,您可以连接所有单独的 2c
字符串。
第一个 2c
字符串的公式
=Substr([Column1];Pos([Column1];"2C");10)
现在提取除此字符串之外的剩余字符串:
不包括前 2c 部分的剩余字符串 "remainining
公式:
=Right([Column1];Length([Column1])-(Pos([Column1];"2C")+10))
现在从剩余的字符串中提取下一个 2c 值
=Substr([remaining];Pos([remaining];"2C");10)
现在您需要提取字符串的下一部分,不包括上述 2c 个值。
附上我所做的截图。
试试让我知道