0

我试图将 2 个字符串与代码进行比较:

public class MyClass
{
  public static void main(String args[])
  {
    String xhex="31 38 30 2E 32 35 35 2E 32 32 35 2E 31 32 33";
    String hex =  remspace(xhex).trim().toString();
    System.out.println(hex);
    String hex1="3138302E3235352E3232352E313233";
    System.out.println(hex1);
    if(hex.trim().equalsIgnoreCase(hex1.trim()))
    //if (hex.equals(hex1))
      {
        System.out.println("equals");
      }else
      {
        System.out.println("not equals");
      }
}

private static String remspace(String data)
    {
      String xdata = null;
      char c='\0';
      String hex = data.replace(' ',c);
      return hex;
    }
}

结果是:

3138302E3235352E3232352E313233
3138302E3235352E3232352E313233
not equals

正如我们所看到的,结果完全相同,但是当我尝试使用 equals 比较字符串时,结果不等于。知道为什么它被认为不等于?

4

2 回答 2

8

它们不相同,第一个字符串'\0'位于原来的空间位置。它们只是在控制台上显示为相同,因为'\0'没有显示。

如果要删除使用的空间,请将remspace方法更改为:

private static String remspace(String data) {
    return data.replace(" ", "");
}
于 2013-05-13T11:13:55.727 回答
0

这对我有用:

public static String removeWhitespaces(String source){
    char[] chars = new char[source.length()];
    int numberOfNewlines = 0;
    for (int i = 0; i<chars.length; i++){
        if (source.charAt(i)==' ')
            numberOfNewlines++;
        else
            chars[i-numberOfNewlines]=source.charAt(i);
    }
    return new String(chars).substring(0, source.length()-numberOfNewlines);
}
于 2013-05-13T12:11:39.303 回答