Java/Groovy如何正确比较两个字符串值。等于()不起作用

Java/Groovy如何正确比较两个字符串值。等于()不起作用,java,groovy,Java,Groovy,好吧,这让我快发疯了。 我对Java/Groovy不是很精通,但请给我指出正确的方向 我有一个GET呼叫,其响应文本类似于[a、b、c] 我终于把它放到arraylist中进行迭代以比较字符串。 我尝试了.equals、.equalsIgnoreCase、compareTo、Objects.equals等。它不匹配。我得到的字符串不一样。 我错过了什么 def sb= new StringBuffer(); def rd = new BufferedReader(new InputStreamR

好吧,这让我快发疯了。 我对Java/Groovy不是很精通,但请给我指出正确的方向

我有一个GET呼叫,其响应文本类似于[a、b、c]

我终于把它放到arraylist中进行迭代以比较字符串。 我尝试了.equals、.equalsIgnoreCase、compareTo、Objects.equals等。它不匹配。我得到的字符串不一样。 我错过了什么

def sb= new StringBuffer();
def rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

def line;
while((line=rd.readLine()) !=null) {
    sb.append(line);
}

//sb = "["a","b","c"]"

List<String> tempList = new ArrayList<String>(Arrays.asList(sb.replaceAll("\\[|\\]","").split(",")));
int count = 0;
String strToFind= "a";

for (String iT : tempList){
    if (strToFind.equals(iT)){
        log.debug("\nString the same\n");
    } else {
        log.debug("\nString not the same\n");
    }
}

这是因为您尝试匹配的字符串包含引号。。你在做什么 a==a,这是不一样的。。如果您不想使用调试器验证我所说的内容,请尝试比较它们的长度或打印它们。答案适用于这个字符串sb=[a,b,c],它以与您提供它相同的方式馈送到InputStreamReader

BufferedReader rd=新的BufferedReadernew InputStreamReadernew ByteArrayInputStream[\a\,\b\,\c\]。getBytes;
这是因为您尝试匹配的字符串包含引号。。你在做什么 a==a,这是不一样的。。如果您不想使用调试器验证我所说的内容,请尝试比较它们的长度或打印它们。答案适用于这个字符串sb=[a,b,c],它以与您提供它相同的方式馈送到InputStreamReader

BufferedReader rd=新的BufferedReadernew InputStreamReadernew ByteArrayInputStream[\a\,\b\,\c\]。getBytes;
这意味着他们不平等。使用调试器,或打印字符串及其长度,以找出原因。有时,字符串中可能有不可见的字符,导致无法进行比较。因此,打印出每个字符串的字节数组,以确定它们是什么。在Groovy中,==表示除空安全外的等于。我还建议大家看一看关于Groovy函数式/管道式的教程:看起来你用手工包装、迭代器等做了一大堆事情,只需要一个.filter或。*。谢谢,正如@WJS所建议的,我打印了byte,是的,有一个doublequate。这意味着它们不相等。使用调试器,或打印字符串及其长度,以找出原因。有时,字符串中可能有不可见的字符,导致无法进行比较。因此,打印出每个字符串的字节数组,以确定它们是什么。在Groovy中,==表示除空安全外的等于。我还建议大家看一看关于Groovy函数式/管道式的教程:看起来你在用手工包装、迭代器等做一大堆事情,只需要一个.filter或一个。*。谢谢,正如@WJS所建议的,我打印了byte,是的,还有那个doublequate,这有可能只是通过JSONSlurper或Jackson之类的JSON解析器来运行。是的,但具体只是一个字符串数组。它不能算作json,因为它不是key:value格式的谢谢,我确实找到了双引号。我到处都有log.debug,但没有捕捉到,因为我认为它意味着字符串。@MichaelMichailidis它是绝对有效的JSON。这是一个带有字符串值的JSON数组。我确实没有想到那个xD。您是对的@chrylisAlso,这可能只需要通过JSONSlurper或Jackson之类的JSON解析器来运行。它不能算作json,因为它不是key:value格式的谢谢,我确实找到了双引号。我到处都有log.debug,但没有捕捉到,因为我认为它意味着字符串。@MichaelMichailidis它是绝对有效的JSON。这是一个带有字符串值的JSON数组。我确实没有想到那个xD。你说得对@chrylis