Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy-如何比较字符串?_Groovy - Fatal编程技术网

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