2012-10-23 98 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'的錯誤實現。:) –