检查字符串是否为数字

时间:2017-06-24 17:56:24

标签: constraints uml modeling operation ocl

================
|    Person    |
|--------------|
|- id : String |
|--------------|
================

我的课程Person的属性idString类型。我必须检查id是否包含11位数字。我在考虑这样的事情:

context Person::id:String
inv:    self.id->forAll(l|l.oclIsTypeOf(Integer))
        and
        self.id.size() = 11 

但我觉得这不正确。

编辑。

现在我确定它不正确, l.oclIsTypeOf(Integer)始终返回false,因为当oclIsTypeOfOclAny类型时,id只应在String上调用。

编辑2.(解决方案)

我解决了这个问题:

context Person::id:String
inv:    not self.id.toInteger().oclIsInvalid()
        and
        self.id.size() = 11 

以下Vincent Aranega提供的解决方案也应该有效

1 个答案:

答案 0 :(得分:3)

String上没有那么多方法,但toInteger可以帮助你。如果字符串无法转换为Integer,则会返回StringInvalid的{​​{1}}值。所以:

Integer

应该做的伎俩! (在Acceleo中成功测试)