java - 编辑字符串中的结果等于 false

标签 java string equals

我尝试将 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 比较字符串时,结果不等于。知道为什么它被认为不等于吗?

最佳答案

它们并不相同,第一个字符串在原来空格的地方有 '\0' 。它们只是在控制台上显示为相同,因为不显示 '\0'

如果您希望删除空格,请将 remspace 方法更改为:

private static String remspace(String data) {
    return data.replace(" ", "");
}

关于java - 编辑字符串中的结果等于 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16520669/

相关文章:

java - DiffUtil.Callback 中 getChangePayload(int oldItemPosition, int newItemPosition) 的用法是什么

java - Firebase 性能 - Crashlytics

c++ - 我应该在 DirectX 中使用 std::string 还是 Windows 数据类型?

java - 在同一个类中使用 equals 方法而不覆盖

java - 如何记录在 servlet 过滤器中调用的托管 bean 名称和操作方法

java - 驱动服务器意外死机了!含 Selenium

c# - 在 visual studio 中查找所有与 == 进行比较的事件

c# - `SetEquals` 中的元素会执行哪个相等性检查?

java - 无法打印包含数字和字母 'M' 的字符串。为什么?

python - 需要更改大写 python 来解释 3 种不同类型的输入,与 raw_input 函数相同