繁体   English   中英

2个相等的字符串返回false

[英]2 strings that are equal are returning false

我正在做的事情应该能够从匹配给定值的xml文件中删除节点,例如

如果节点ID等于3,则将其删除

这是我的问题,我在比较2个字符串,一个是表明我们在寻找什么的字符串,另一个是节点值,它们都完全相同,但是它们在.equals()中返回false

我传递的字符串=“ James1”找到的字符串=“ James1”

这两个字符串之间完全没有区别,这是怎么回事?

if (value.item(j).getAttributes().getNamedItem("column").getNodeValue().equals(where)) {
    Log.d("DataStore", "Node Value: " + value.item(j).getTextContent() + " length: " + value.item(j).getTextContent().length() + " equal to: " + equalTo + " length: " + equalTo.length());
    if (value.item(j).getTextContent().equalsIgnoreCase(equalTo)) {
        dataNode.removeChild(rows.item(i));
        count++;
    }
}

这条线是失败的地方,但应该成功

if (value.item(j).getTextContent().equalsIgnoreCase(equalTo)) {

这是当它到达那么远时注销的内容,我可以向您保证这些字符串完全相同。

Node Value: James2 length: 6 equal to: James2 length: 6

您没有提供足够的数据来给出明确的答案。

如果失败,请添加以下行:

compareStr( value.item(j).getTextContent(), equalTo);

并将此方法添加到您的类或实用程序类中

public static void compareStr(Object a, Object b)
{
    if (a==null && b==null)
    {
        System.out.println("Both null");
        return;
    }
    if ( a==null || b==null )
    {
        System.out.println( "1st String is "
                + ( a==null ? "" : "not " )
                + "but 2nd String is "
                + ( b==null ? "" : "not " )
                + "null" );
        return;
    }
    if ( !( a instanceof String) )
    {
        System.out.println( "1st Object is not a String");
        return;
    }
    if ( !( b instanceof String) )
    {
        System.out.println( "2nd Object is not a String");
        return;
    }
    String s = (String)a;
    String t = (String)b;
    if ( s.length()!=t.length() )
    {
        System.out.println( "Lenghts differ");
        return;
    }
    for ( int i=0; i<s.length(); ++i )
    {
        if ( s.charAt(i)!=t.charAt(i) )
        {
            System.out.println( "The character at position " + i + " are different.");
            return;
        }
    }
    System.out.println("Strings are equal");
}

它会告诉您两个字符串有什么不同。

如果它们仍然相等,则应考虑所涉及的方法是否有副作用。

将您的代码更改为:

if (value.item(j).getAttributes().getNamedItem("column").getNodeValue().equals(where)) {
    String s = value.item(j).getTextContent();
    Log.d("DataStore", "Node Value: " + s + " length: " + s.length() + " equal to: " + equalTo + " length: " + equalTo.length());
    compareStr( s, equalTo );
    if (s.equalsIgnoreCase(equalTo)) {
        dataNode.removeChild(rows.item(i));
        count++;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM