String包含方法返回false,即使string包含子串

时间:2016-07-18 09:50:40

标签: java string substring equals indexof

我有一个字符串:

  

20160719_P_BID_20160718_130000

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

  1. .contains("BID") / .contains("_BID_")
  2. .indexOf("BID")
  3. .substring(11,14).equals("BID)
  4. 但是所有方法都返回false,即使字符串的输出包含字符串"BID"并且是字符串"BID"

    更新

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

    有人可以解释为什么方法返回错误吗?

    感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

因为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

你有问题的原因

答案 1 :(得分:0)

测试此

String fileName = file.getName();

if(fileName.contains(tradeTypeStr))