【发布时间】:2017-11-30 15:24:33
【问题描述】:
我有一个使用 Java Matcher 的简单方法
public int countWord(String word, File file) throws FileNotFoundException {
String patternString = word;
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(file);
int count = 0;
while (matcher.find()) {
count++;
System.out.println("found: " + count + " : "
+ matcher.start() + " - " + matcher.end());
}
return count;
}
我的想法是将文件传递到指令中:
Matcher matcher = pattern.matcher(file);
但Java 抱怨它,即使我遵循 IDE 的建议,说要进行这样的演员:
java.util.regex.Matcher matcher = pattern.matcher((CharSequence) file);
事实上,当我尝试启动编译时,它会报告此消息:
Exception in thread "main" java.lang.ClassCastException: java.io.File cannot be cast to java.lang.CharSequence
我怎样才能越过这个障碍?
【问题讨论】:
-
你到底想做什么,检查文件名是否匹配模式,或者匹配文件的内容? 1:做
file.getName(),2:这要复杂得多,您必须打开并读取文件并匹配文件的内容 - 匹配器不会自动为您执行此操作。 -
显然,文件不是字符序列。您必须先读取文件,然后将其转换为 String/CharSequence。 stackoverflow.com/questions/16027229/…
-
@Jesper:我要匹配文件的内容
-
所以加载文件的内容,并将其传递给
match...
标签: java compilation matcher