String Doesn&#t; t .equal()带空格的字符串

时间:2015-10-28 01:08:47

标签: string compare equals

false

正如你所看到的,我的问题是我有两个字符串,我正在比较,如果我尝试没有空格它可以工作,但当我尝试空格时,它没有。这是为什么?

stacktraces print&正如你所看到的,它们是完全相同的,在我的代码中我出错了吗?

public ArrayList<String> toTradeArray = new ArrayList<String>();
public String lastTraded = null;
public String needsTraded = null;
public String[] toTrade = new String[toTradeArray.size()];

public void checkTrades() {
    if(s.getTrade().getLastRequestingPlayer() != null) {
        lastTraded = s.getTrade().getLastRequestingPlayer().getName(); 
    }
    toTrade = toTradeArray.toArray(toTrade); 
    for (String i : toTrade)  { 
        if(lastTraded != null) {
            s.log("Last Traded: "+lastTraded.toLowerCase());
            s.log("We need: "+i.toLowerCase());
            if(i.toLowerCase().equals(lastTraded.toLowerCase())) {
            s.log("Correct Player Traded");
            needsTraded = i.toLowerCase(); 
        }
    }   
    }

}

1 个答案:

答案 0 :(得分:0)

如果空格只是前导或尾随字符串,则可以使用trim。如果您只想忽略字符串中的任何空格,可以使用正则表达式来删除它们。例如:

    String abcd0 = "  ABCD\n\t";
    String abcd1 = " Ab c\t d\n";
    String abcd2 = "aBcD";
    System.out.println(abcd2.equalsIgnoreCase(abcd0.trim())); // true
    System.out.println(abcd2.equalsIgnoreCase(abcd1.replaceAll("\\s+", ""))); // true

PS:您可以使用equalsIgnoreCase()而不是将两个字符串转换为小写,以达到简洁的目的。