DXL截断对象编号

问题描述

我继承了一些DXL代码以截断对象号以排除最后的“ 0” 对于小于10(或两位数)的段落编号,此方法效果很好。我承认是DXL的新手,但是由于我对RegExp不熟悉,所以这段代码使我很困惑。我知道该论坛上的人员将对此进行研究并获得答案,然后我将学习并向前发展。 这是代码

string s = number(obj)
Regexp paraNumExp = regexp2 "[0-9](\\.[0-9])*"
if(paraNumExp s)  obj.attrDXLName =  s[match 0]
delete paraNumExp

这是产生的东西: AbsNum,ObjNumber,DXL Attribute

这是附件的DXL代码(测试模块的输出) (DXL)第1段

string s = number(obj)
Regexp paraNumExp = regexp2 "[1-9](\\.[1-9])*"
if(paraNumExp s)  obj.attrDXLName =  s[match 0]
delete paraNumExp

(DXL)第2段

string s = number(obj)
Regexp paraNumExp = regexp2 "^[0-9]+\\.[0-9]+"
if(paraNumExp s)  obj.attrDXLName =  s[match 0]
delete paraNumExp

(DXL)第4段

Regexp reZero = regexp2 "(\\.0)-"
string s = number(obj)
if (reZero s) {
        obj.attrDXLName = s[0:start 1-1]
}
delete reZero

DOORS output with what I want

解决方法

不太确定,您要完成什么,或者更深层的问题是什么。但是要回答您的“截断待处理零”问题,我建议在此处使用“开始”和“结束”方法,例如:

Regexp reZero = regexp2 "(\\.0)-"

Module m = current
filtering off
Object o
for o in m do {

    string strON = number( o )
    
    string strTruncated = strON
    if (reZero strON) {
        strTruncated = strON[0:start 1-1] "" strON[end 1+1:]
    }
    
    print "" identifier( o ) ": " strON " => '" strTruncated "'\n"
}
,

在您的帮助下以及同事的烦恼,我得到了所需的结果。 这是DXL代码:

// Define reZero to detect ".0-"
Regexp reZero = regexp2 "(\\.0)-"
// Get the Object Number
string s = number(obj)
if (reZero s) {
  // Found ".0-"? Strip off ".0-" and all following that string
  obj.attrDXLName = s[0:start 1-1]
} else {
  // Did not find ".0-". Use complete object number.
  obj.attrDXLName = s
}
delete reZero

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...