【问题标题】:String contains method return false even when string contains substring即使字符串包含子字符串,字符串包含方法也返回 false
【发布时间】:2016-11-20 21:03:29
【问题描述】:

我有一个字符串:

20160719_P_BID_20160718_130000

我需要检查这个字符串是否包含子字符串“BID”。我尝试了各种方法,例如:

  1. .contains("BID") / .contains("_BID_")
  2. .indexOf("BID")
  3. .substring(11,14).equals("BID)

但所有方法都返回了false,即使字符串的输出确实包含字符串"BID"并且是字符串"BID"

更新:

String fileName = file.getFileName();
String tradeTypeStr = fileName.substring(11,14);        
if(tradeTypeStr.equalsIgnoreCase(tradeType))

有人能解释一下为什么这些方法返回 false 吗?

感谢您的帮助!

【问题讨论】:

  • 请显示更多代码。我刚刚跑了"20160719_P_BID_20160718_130000".contains("BID"),结果是“真”
  • 您是否尝试过复制确切的字符串并粘贴到代码中?
  • .contains 方法应该可以工作。你会发布你测试的确切代码吗?
  • 调试并检查变量fileName中的值
  • 您必须打印 tradeTypeStr 以查看您要比较的值是什么。

标签: java string substring equals indexof


【解决方案1】:

测试一下

String fileName = file.getName();

if(fileName.contains(tradeTypeStr))

【讨论】:

  • 也许您在输入“BID”时正在更改键盘语言!您可以使用文件名的调试变量中的复制和粘贴吗?它应该可以工作。
【解决方案2】:

由于 String.contains() 和 String.indexOf() 确实有效,这听起来你的编码可能有问题。试试

    String fileName = file.getName();
    for (char c : fileName.toCharArray())
    {
        System.out.println(c + " : " + Integer.toHexString(c));
    }

如果你没有找到类似的东西

_ : 5f
B : 42
I : 49
D : 44
_ : 5f

你找到了问题的原因

【讨论】:

  • 谢谢!你是最有帮助的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多