Groovy-如何比较字符串?


82

如何比较作为参数传递的字符串

以下方法无效。

 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"
   }
 }    

20
India与相同india。第一个字符不同
tim_yates 2012年

Answers:


86

这行:

if(str2==${str}){

应该:

if( str2 == str ) {

${}会给你一个语法错误,因为它们只Groovy的字符串内部使用的模板


@ user1602802它在groovy控制台中执行。您遇到什么错误?
tim_yates 2012年

25
@ user1602802您比较India有资金Iindia有小写i像编辑你的问题? India != india。它们是不同的。
tim_yates 2012年

117

这应该是一个答案

str2.equals(str)

如果要忽略大小写

str2.equalsIgnoreCase(str)


17
拒绝投票,因为原始问题未指定应忽略护理。另外,groovy支持==操作符进行字符串比较(与Java==相比,身份比较而不是字符串比较)。
brianmearns

我将答案调整为区分大小写
ojblass

1
Groovy中的equalsIgnoreCase是否有别名?
Simon Logic

1
我认为您可以创建一个称为eIC或类似方法的包装函数。取决于它实际上给您带来的麻烦。
ojblass

4
警告。.equals()没有因为它在Java中确实表现同样在Groovy。此处的示例-向下滚动到“ GString and String”。基本上,两个项目都必须具有相同的String类类型。由于String类在赋值中是隐式的-GString是Groovy语言构造,而String是内联定义,因此将返回类似def foo = "foo"...的"${foo}".equals("foo")内容false
ingyhere

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”,它将仍然有效,因此可以降低您打错字的可能性。


42
str2.equalsIgnoreCase( str )可能更容易阅读:-)
tim_yates 2012年

1
@tim_yates不仅更容易阅读,而且更正确。诸如此类的大小写转换容易出现语言环境错误(土耳其语I等)。
Ohad Schneider

1

最短的方法(由于字符串比较区分大小写,因此将显示“ not same”):

def compareString = {
   it == "india" ? "same" : "not same"
}    

compareString("India")

-3

在Groovy中,null == null获得true。在运行时,您将不知道发生了什么。在Java中,==正在比较两个引用。

无论是否安全地使用equals,这都是导致基本编程混乱的原因。在运行时,null.equals将给出异常。您有机会知道出了什么问题。

特别是,您从映射中不存在的键中获得两个值,==使它们相等。


-7

要比较任何字符串时,请使用def变量。将以下代码用于该类型的比较。

def变量名称= null

SQL查询给您一些回报。将函数与返回类型def一起使用。

def函数名(def变量名){

返回变量名称

}

if(“ $ variable name” ==“ true”){

}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.