gpt4 book ai didi

java - 2 个相等的字符串返回 false

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:46 26 4
gpt4 key购买 nike

我正在研究一些应该能够从 xml 文件中删除与给定值匹配的节点的东西,例如

如果节点id等于3,则删除它

这是我的问题,我正在比较两个字符串,一个是表示我们正在查找的字符串,另一个是节点值,它们完全相同,但它们在 .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

最佳答案

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

在 if 失败之前添加此行:

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++;
}
}

关于java - 2 个相等的字符串返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com