如何比较作为参数传递的字符串
以下方法无效。
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"
}
}
答案 0 :(得分:91)
这应该是一个答案
str2.equalsIgnoreCase(str)
答案 1 :(得分:59)
这一行:
if(str2==${str}){
应该是:
if( str2 == str ) {
${
和}
会给你一个解析错误,因为它们只能在Groovy字符串中用于模板化
答案 2 :(得分:6)
如果您不想检查大写或小写,可以使用以下方法。
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”它仍然可以工作,所以你可以降低输入拼写错误的机会。
答案 3 :(得分:1)
最短路径(将打印“不相同”,因为字符串比较区分大小写):
def compareString = {
it == "india" ? "same" : "not same"
}
compareString("India")
答案 4 :(得分:0)
space
输出:
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
}
答案 5 :(得分:-4)
在Groovy中,null == null
获得true
。在运行时,您不会知道发生了什么。
在Java中,==
正在比较两个引用。
这是基本编程中混乱的原因,使用equals是否安全。在运行时,null.equals将给出异常。你有机会知道出了什么问题。
特别是,你从地图中不存在的两个键中得到两个值,==
使它们相等。
答案 6 :(得分:-6)
当你想要比较任何String时,使用def变量。使用以下代码进行该类型的比较。
def variable name = null
SQL查询给你一些回报。使用返回类型为def。
的函数def functionname(def variablename){
返回变量名称
}
if(“$ variable name”==“true”){
}