Java - String.contains()表现得很奇怪

时间:2014-05-12 12:29:14

标签: java windows string

这段代码在我的开发机器上运行正常(使用Netbeans IDE安装在VirtualBox jre 8上的Windows 7),但在另一台机器(Windows 7 jre 8)上始终返回true。 它应该只找到名为“town_house.html”的文件,而不是总是为文件夹中的每个文件返回true。从提示中运行jar文件我没有任何异常。 也许这只是一个微不足道的错误我通常用C / C ++编程......任何想法?

for(File f : files)
        {
            if(f.toString().contains("_") && 
               f.toString().contains(".html")){
                System.out.print("Processing file: " + f.getName()+ "\n");
                String[] fileSplit = f.getName().split("_");
                towns.add(fileSplit[0]);

            }
        }

提前致谢

1 个答案:

答案 0 :(得分:3)

您正在检查toString()而不是getName() - 目录路径可能包含下划线。

试试这个(注意简化测试):

for(File f : files) {
    if (f.getName().matches(".*_.*\\.html")) {
        System.out.print("Processing file: " + f.getName()+ "\n");
        String[] fileSplit = f.getName().split("_");
        towns.add(fileSplit[0]);
    }
}