Groovy - 如何比较字符串?

时间:2012-08-16 09:32:00

标签: 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"

 compareString(str)

 def compareString(String str){
   def str2 = "india"
   if( str2 == str ) {
     println "same"
   }else{
     println "not same"
   }
 }    

7 个答案:

答案 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”){

}