2012-10-23 64 views
1

我想比较两个使用Java的字符串。首先蜇name我从.mif文件使用GDAL在cp1251编码。第二个kadname我从jsp获得。比较我这样做:Java中的字符串比较

if (attrValue instanceof String) 
{ 
    String string3 = 
     new String((attrValue.toString()).getBytes("ISO-8859-1"), "cp1251"); 
    dbFeature.setAttribute(name, string3); 
    System.out.println("Name=" + name); 
    System.out.println("kadname=" + kadname); 
    if (name.equalsIgnoreCase(kadname)) 
    { 
     kadnum = string3; 
     System.out.println("string3" + string3); 
    } 
} 

而且在控制台我得到这个:

Name = kadnumm 
kadname = kadnumm 

请告诉我问题呢?

+1

究竟是什么问题?你在问为什么弦不平等? – Jivings

+0

是的。我很感兴趣,为什么等于大小不相等。 –

+0

什么是正确的这个问题? –

回答

5

我可以看到他们不相等的唯一原因是前导或尾随空格。

可以trim字符串,以消除任何这些空格,然后对它们进行比较: -

if (name.trim().equalsIgnoreCase(kadname.trim())) 

或者,可能有一些其他non-printable字符,这将不会被删除trimming得到。您可以尝试在single quotes中打印您的字符串,并检查是否有任何: -

System.out.println("'" + name + "'"); 
+0

等一下试着做到这一点。重新部署进展缓慢。 –

+0

其真正的帮助。为什么我不考虑修改jsp响应(。谢谢 –

+0

@KliverMax。每当你看到一些奇怪的行为与字符串比较时,总是尝试修剪你的字符串以确保没有前导或尾随空格,因为, Java不能有'equals'的错误实现。:) –