我一直在阅读正则表达式,我认为这会起作用,但它似乎不想工作.我需要做的就是将电话号码中的前导1删除(如果存在).
所以:
def mphone = 1+555-555-5555
mphone.replace(/^1/, "")
Run Code Online (Sandbox Code Playgroud)
这个输出不应该+ 555-555-5555吗?
我正在使用Inno安装程序为我正在处理的项目创建一个安装程序,我需要它来设置java环境变量,这样当它们运行cmd时,它们不会得到java not found错误,或类似的东西.
我找到了一些与Inno Setup和设置环境变量相关的帖子,但有没有人知道这个实例特有的东西?
我有一个域,其中有两个字段可以为空,但不能同时为空。所以像这样的事情
class Character {
Association association
String otherAssociation
static constraints = {
association (validator: {val, obj-> if (!val && !obj.otherAssociation) return 'league.association.mustbeone'})
otherAssociation (validator: {val, obj-> if (!val && !obj.association) return 'league.association.mustbeone'})
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行如下测试时,我只会失败
void testCreateWithAssociation() {
def assoc = new Association(name:'Fake Association').save()
def assoccha = new Character(association:assoc).save()
assert assoccha
}
void testCreateWithoutAssociation() {
def cha = new Character(otherAssociation:'Fake Association').save()
assert cha
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑 看起来如果我将代码分解为如下所示:
def assoc = new Association(name:'Fake Association')
assoc.save()
Run Code Online (Sandbox Code Playgroud)
一切正常。但现在我想知道为什么我不能像在其他测试中那样将 .save() 放在同一行中并且它可以工作。
我想要做的是找到一个域,然后创建一个域或保存预先存在的域.这是我目前正在使用的代码(在此项目中,skeleton是包名称):
def save() {
Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name)
def instance = lob.get(params.lob.id)
if (instance){
params.data.each { name, value ->
if (instance.metaClass.hasProperty(name)){
instance[name] = value
}
}
}else{
instance = new lob()
params.data.each { name, value ->
if (instance.metaClass.hasProperty(name)){
instance[name] = value
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.任何人都可以帮我解决这个问题吗?