我需要从 Blue Prism 计算阶段的文本中提取数字。文本是“请记下您的订单编号:123” 每次下新订单时,数字“123”都会更改。我需要从末尾提取数字并放入数据项中。我目前正在使用:
对(“请记下您的订单参考:”,“3”),它不起作用。
任何建议将不胜感激。
我刚刚完成 BluePrism 的 Developer 1 课程并进行了相同的练习。我使用了这个字符串:
ToNumber(Replace([Save ordernumber], "请记下您的订单编号:",""))
它从字符串中删除了文本,将其替换为空(“”),然后从字符串中剩余的数据中创建一个数字。瞧,你有你的订单号。
您可以使用 Blue Prism 中的计算步骤来实现这一点,而且您几乎做对了。
我假设您已将包括订单参考号在内的整个字符串加载到dataitem
. 让我们称之为dataitem [orderReference]
Right([orderReference],3)
然后会给你字符串中的最后三个字符(这将是数字)。
这仅在订单参考始终为三位数时才有效。随着时间的推移,订单参考可能会增加到四位或五位,而您仍然只能得到最后三位。
为了适应这一点,您可以使用Len([orderReference])
来获取整个字符串的长度。从长度中减去 42(数字前有 42 个字符 - 我假设 : 后面有一个空格,否则为 41)。
只需在 Right 函数中使用该数字而不是 3。
Right([orderReference],Len([orderReference])-42)
Replace("Please take note of your order reference:123",
Left("Please take note of your order reference: 123",
InStr("Please take note of your order reference: 123",":")),"")
注意:使用数据项而不是“请记下您的订单参考:123”..
":"
因此,您在要返回的值之前有一个唯一标识符,您可以利用它来发挥自己的优势。
1) 使用InStr
函数查找此唯一字符在字符串中的位置。
2) 使用 Left 函数返回字符,直到并包括唯一字符。
3)从这里我们可以利用替换功能来取消你刚刚返回的文本,只留下你想要的值。
4)在修剪功能中夹头(良好的内务管理和更清洁的数据)
我已经展示了我在下面所做的事情([Data1]
用作您的字符串值),这与您在该值之前收到的消息无关,只要您有一个唯一字符,它将始终返回该值(我意识到我可以在两个词(它使它变得动态))
Trim(Replace([Data1], Left([Data1], InStr([Data1], ":")), ""))
希望这可以帮助 :)
将您的数据存储在变量 A=请注意您的订单参考:123
使用 Replace([A],"请记下您的订单参考:空格","space ") THEN 修剪它: Trim(Replace([A],"请记下您的订单参考:空格","空格" )) THEN 转换为 Number Tonumber(Trim(Replace([A],"请记下您的订单参考:空格","空格")))
我有同样的情况,AUD $ 234 我尝试了以上对我有帮助的步骤,祝你好运!!
使用替换():
Trim(Replace(AllTextInElement, "Please take note of your order reference:", ""))
在代码块中使用正则表达式:
ExtractedNumbers = Regex.Match(AllTextInElement, "\d+")
您可以在蓝棱镜计算阶段使用以下语句
Trim(Mid([Data2], InStr([Data2], ":")+1, Len([Data2])-2))
ToNumber(Replace([Order Reference], "Please take note of your order reference:",""))
string test = "Please take note of your order reference: 123";
string digits = new String(test.Where(Char.IsDigit).ToArray());
Console.WriteLine(digits);
**您可以通过使用代码阶段来实现这一点,我使用的是 C#。而不是将输出打印到控制台将其加载到数据项**