98

パラメータとして渡される文字列を比較する方法

次の方法は機能しません。

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

7 に答える 7

133

これは答えになるはずです

str2.equals(str)

大文字と小文字を区別しない場合

str2.equalsIgnoreCase(str)

于 2014-05-08T18:57:03.660 に答える
107

この行:

if(str2==${str}){

する必要があります:

if( str2 == str ) {

${および}は、テンプレート作成のためにGroovy文字列内でのみ使用する必要があるため、解析エラーが発生します。

于 2012-08-16T09:33:53.533 に答える
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」に変更しても機能するので、タイプミスをする可能性が低くなります。

于 2012-08-16T09:45:35.530 に答える
0

最短の方法(文字列の比較では大文字と小文字が区別されるため、「同じではない」と出力されます):

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

compareString("India")
于 2013-01-20T12:15:54.387 に答える
0
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
于 2020-12-05T02:04:54.953 に答える
-3

Groovyでは、null == nullを取得しtrueます。実行時には、何が起こったのかわかりません。Javaでは、==2つの参照を比較しています。

これは、equalsを安全に使用できるかどうかという、基本的なプログラミングにおける大きな混乱の原因です。実行時に、null.equalsは例外を与えます。何が悪かったのかを知るチャンスがあります。

特に、マップに存在しないキーから2つの値を取得し、==それらを等しくします。

于 2014-12-01T21:09:59.193 に答える
-7

文字列を比較する場合は、def変数を使用します。そのタイプの比較には、以下のコードを使用してください。

def変数名=null

SQLクエリはあなたにいくらかのリターンを与えます。戻り型defで関数を使用します。

def functionname(def variablename){

変数名を返す

}

if( "$ variable name" == "true"){

}

于 2016-03-03T12:50:01.930 に答える