ibm-doors - 替换dxl中两个模块之间的字符串
问题描述
我需要你的帮助,请知道我的想法是否可能是 dxl ,我有两个模块,编号在 [....] 之间,问题出在 Modul 1 中缺少一些 [数字]!
如何从模块 2 中获取 [number]?
例子:
模块 1:“发动机或电动机是一种旨在将一种形式的能量转换为机械能的机器。见 [无编号]”
模块 2:“发动机或电动机是一种旨在将一种形式的能量转换为机械能的机器。参见 [123]”
在我的示例中,括号之间缺少的数字是 123,我想在模块 1 中写下这个数字
此致,
解决方案
是的,这应该是可能的。
首先,您需要一些方法来识别相应的对象。例如,如果您有一些属性“manually_filled_requirement_id”,您将遍历模块 1,对于每个对象,获取 ID,在模块 2 中找到具有相同 ID 的对象。然后,问题是,您是否还想更新需求文本或只更新括号中的数字,并且在对象包含不同数字的情况下,确定哪个是正确的数字。如果您只想更新数字,则可以使用正则表达式。
如果要复制完整的文本,很简单:
object1."Object Text" = object2."Object Text"
否则,您必须将对象 1 和 2 的文本分成三个部分:
- 文本中直到并包括(第一个?最后一个?)[的部分
- (第一个?最后一个?)[]之间的部分
- (第一个?最后一个?)之后的部分]
然后你可以设置
object1."Object Text" = part_1_of_object_1 part_2_of_object_2 part 3_of_object_1
您可以使用的正则表达式是:
Regexp hasAPlaceForNumber = regexp2 "(^[^\[]+\[)([^\]]*)(\].*$)"
Regexp hasNumber = regexp2 "(^[^\[]+\[)([\d]+)(\].*$)"
即:在匹配 1 中收集从开头 (^) 到第一个 [ 的所有内容,在匹配 2 中收集所有不是 ] 的内容,在匹配 3 中收集直到结尾 ($) 的所有内容。第二个 Regexp 匹配 if part 2 仅由数字组成。
然后你可以做类似的事情
string o1Text = object1."Object Text"""
string o2Text = object2."Object Text""
if ((hasNumber o2Text) and (not hasNumber o1Text) and hasAPlaceForNumber o1Text)
hasNumber o2Text
string part_1_of_object_2 = o2Text [match 1]
string part_2_of_object_2 = o2Text [match 2]
string part_3_of_object_2 = o2Text [match 3]
hasAPlaceForNumber o1Text
string part_1_of_object_1 = o1Text [match 1]
string part_2_of_object_1 = o1Text [match 2]
string part_3_of_object_1 = o1Text [match 3]
object1."Object Text" = part_1_of_object_1 part_2_of_object_1 part_3_of_object_1
else if (...)
我不得不承认我在 perl 方面比在 DXL 方面更流利,所以可能是我混淆了一些语法,但你应该明白这一点。
推荐阅读
- python - 如何避免此 Python 代码中的错误?
- android - Flutter 在 org.gradle.api.Project 类型的项目“:app”上找不到参数 [] 的方法 Properties()
- python - 在 Numpy 中实现 A2C
- html - CSS对齐 - 当另一张卡片添加到页面时卡片高度缩小
- macos - 一个很奇怪的问题,就是winit阻塞了其他线程的输出
- swift - Swift:将 Int 转换为日期
- reactjs - 触发 React Router 状态更新
- .net - 在 .net 核心的 aws S3 中使用 GetObjectAsync 下载时,这不是有效的位图文件
- javascript - 使用 Javascript 浏览器 Fetch API 将数据提取到选项卡式部分
- javascript - 为什么在函数内部可以使用稍后声明的变量