Java 使用方法获取子字符串无效
我试图在我的程序中引入一个方法,它应该会产生一个子字符串。我写了下面的代码,但为什么不能工作呢Java 使用方法获取子字符串无效,java,groovy,Java,Groovy,我试图在我的程序中引入一个方法,它应该会产生一个子字符串。我写了下面的代码,但为什么不能工作呢 class testmethod { String FQDN = "TEST.domain.local" def sname = shortname(FQDN); println $sname def shortname(Longname) { shortname1 = Longname.substring(0, Longname.
class testmethod {
String FQDN = "TEST.domain.local"
def sname = shortname(FQDN);
println $sname
def shortname(Longname)
{
shortname1 = Longname.substring(0, Longname.indexOf('.'))
return shortname1
}
}
首先,代码应该是(为了更好的可读性):-
def shortname(字符串Longname)
notdef shortname(Longname)
此外,shortname1=Longname.substring(0,Longname.indexOf('.'))
在此shortname1
中未定义
此外,您可以尝试:-
def shortname(String Longname)
{
String[] shortnameArr = Longname.split("\\.");
return shortnameArr[0];// will return TEST
}
您在一段代码中混合了Groovy的脚本和类概念 只需删除类定义和$sign即可使用脚本方式:
String FQDN = "TEST.domain.local"
def sname = shortname(FQDN);
println sname
def shortname(Longname)
{
shortname1 = Longname.substring(0, Longname.indexOf('.'))
return shortname1
}
或添加类初始化和局部变量声明以使用类方式:
class testmethod {
String FQDN = "TEST.domain.local"
def sname = shortname(FQDN);
def shortname(Longname)
{
def shortname1 = Longname.substring(0, Longname.indexOf('.'))
return shortname1
}
}
def tc = new testmethod()
println tc.sname
我是说
String Longname
,而不是def sname
或def shortname
@AnkitNigamdef shortname(Longname)
等于def shortname(def Longname)
。将实际类定义为String
而不是默认的def
,这很好,一些将来阅读此代码的人会对此表示感谢,但这不是@rora所做的asked@IgorArtamonov,thanx用于澄清。顺便说一句,我用了你的FB-SpringSecurity。做得很好。@AnkitNigam感谢您使用它:)顺便说一句,更新后的答案看起来不错,我想最初的问题是因为未定义的shortname1
,但问题中的代码非常混乱,很难说@rora是什么意思。刚从Groovy开始。来自perl/vbscript背景,没有JAVA经验@伊格拉塔莫诺夫-你是对的。这不是完整的代码。目前,我已经开始将VBScript代码迁移到Groovy,在这个脚本中,我有一个函数,通过使用该函数将FQDN更改为主机名。groovy的缺点是有很多方法可以做同样的事情。顺便说一句,我得到的错误是(Groovy控制台)是1个编译错误:第5行第4列的意外标记:println它是真实代码的一部分吗?还是仅仅是一个“伪代码”?它看起来不像是真实的东西,以这种形式很难回答,太多的语法错误确实是有趣的代码风格惯例