Groovy-如何比较字符串?
如何比较作为参数传递的字符串 以下方法不起作用Groovy-如何比较字符串?,groovy,Groovy,如何比较作为参数传递的字符串 以下方法不起作用 String str = "saveMe" compareString(str) def compareString(String str){ def str2 = "saveMe" if(str2==${str}){ println "same" }else{ println "not same" } } 也试过 String str = "India" comp
String str = "saveMe"
compareString(str)
def compareString(String str){
def str2 = "saveMe"
if(str2==${str}){
println "same"
}else{
println "not same"
}
}
也试过
String str = "India"
compareString(str)
def compareString(String str){
def str2 = "india"
if( str2 == str ) {
println "same"
}else{
println "not same"
}
}
这一行:
if(str2==${str}){
应该是:
if( str2 == str ) {
${
和}
将给您一个解析错误,因为它们应该只在Groovy字符串中用于模板化如果您不想检查大写或小写,可以使用以下方法
String str = "India"
compareString(str)
def compareString(String str){
def str2 = "india"
if( str2.toUpperCase() == str.toUpperCase() ) {
println "same"
}else{
println "not same"
}
}
因此,现在如果您将str改为“iNdIa”,它仍然有效,因此您可以降低键入错误的几率。最短路径(将打印“not same”,因为字符串比较区分大小写):
这应该是一个答案 str2.equals(str) 如果你想忽略这个案例 str2.等信号情况(str)
在Groovy中,
null==null
获取一个true
。在运行时,您将不知道发生了什么。
在Java中,==
正在比较两个引用
这是基本编程中一个大混乱的原因,即使用equals是否安全。在运行时,null.equals将给出一个异常。你有机会知道出了什么问题
特别是,您可以从映射中不存在的键获得两个值,
=
使它们相等 要比较任何字符串时,请使用def变量。使用以下代码进行该类型的比较
def变量名=null
SQL查询会给您一些回报。使用返回类型为def的函数
def函数名(def变量名){
返回变量名
}
如果(“$variable name”==“true”){
}
输出:
single quote string classclass java.lang.String
saveMe == saveMe ? true
str = $str
double quoted string with interpolation class org.codehaus.groovy.runtime.GStringImpl
double quoted string without interpolation class java.lang.String
saveMe equals saveMe ? true
$str == $str2 ? saveMe==saveMe
${str == str2} ? true ?
$str equalsIgnoreCase $str2 ? true
triple single quoted Multi-line string, Interpolation not supported $str ${str2}
Groovy has also an operator === that can be used for objects equality
=== is equivalent to o1.is(o2)
triple quoted string
triple single quoted string class java.lang.String
triple double quoted Multi-line string, Interpolation is supported saveMe == saveMe
just like double quoted strings with the addition that they are multiline
'${str == str2} ? ' true
triple double quoted string class java.lang.String
@user1602802它在groovy控制台中执行。您遇到了什么错误?@user1602802您是否将
India
与大写的I
和India
与小写的I
进行了比较,就像您问题的编辑一样<代码>印度!=印度。它们是不同的。来自Java,这可能看起来是错误的,但是=
操作符进行字符串比较,就像Groovy中的equals
。印度
与印度
不同。第一个字符与str2不同。equalsIgnoreCase(str)可能更容易阅读:-)@tim_-yates不仅更容易阅读,而且更正确。像这样的大小写转换容易出现区域设置错误(Turkish I等)。因为原始问题没有指定它应该忽略注意,所以进行向下投票。另外,groovy支持用于字符串比较的==
操作符(与Java不同,=
进行身份比较,而不是字符串比较)。我将答案调整为区分大小写groovy中是否有equalsIgnoreCase的短别名?我想您可以创建一个名为eIC或类似的包装函数。这取决于你到底有多烦。警告.equals()
在Groovy中的行为与在Java中的行为不同。示例--向下滚动到“GString和String”。基本上,这两个项必须是相同类型的字符串类。因为String类在赋值中是隐式的——GString是Groovy语言构造,String是内联定义,类似于def foo=“foo”
<代码>“${foo}”.equals(“foo”)将返回false
。
String str = "saveMe"
compareString(str)
def compareString(String str){
def str2 = "saveMe"
// using single quotes
println 'single quote string class' + 'String.class'.class
println str + ' == ' + str2 + " ? " + (str == str2)
println ' str = ' + '$str' // interpolation not supported
// using double quotes, Interpolation supported
println "double quoted string with interpolation " + "GString.class $str".class
println "double quoted string without interpolation " + "String.class".class
println "$str equals $str2 ? " + str.equals(str2)
println '$str == $str2 ? ' + "$str==$str2"
println '${str == str2} ? ' + "${str==str2} ? "
println '$str equalsIgnoreCase $str2 ? ' + str.equalsIgnoreCase(str2)
println '''
triple single quoted Multi-line string, Interpolation not supported $str ${str2}
Groovy has also an operator === that can be used for objects equality
=== is equivalent to o1.is(o2)
'''
println '''
triple quoted string
'''
println 'triple single quoted string ' + '''' string '''.class
println """
triple double quoted Multi-line string, Interpolation is supported $str == ${str2}
just like double quoted strings with the addition that they are multiline
'\${str == str2} ? ' ${str == str2}
"""
println 'triple double quoted string ' + """ string """.class
}
single quote string classclass java.lang.String
saveMe == saveMe ? true
str = $str
double quoted string with interpolation class org.codehaus.groovy.runtime.GStringImpl
double quoted string without interpolation class java.lang.String
saveMe equals saveMe ? true
$str == $str2 ? saveMe==saveMe
${str == str2} ? true ?
$str equalsIgnoreCase $str2 ? true
triple single quoted Multi-line string, Interpolation not supported $str ${str2}
Groovy has also an operator === that can be used for objects equality
=== is equivalent to o1.is(o2)
triple quoted string
triple single quoted string class java.lang.String
triple double quoted Multi-line string, Interpolation is supported saveMe == saveMe
just like double quoted strings with the addition that they are multiline
'${str == str2} ? ' true
triple double quoted string class java.lang.String