我试图创建一个方法来查找.java文件中的所有条件(我假设该文件只包含正确的指令)。 它应该计算所有" if",而不是那些被评论所附带或作为字符串处理的。 我试着用StringTokenizer来解决这个问题,但是我不知道在" //"标志和字符串与" "。有可能以这种方式实现这个问题吗?
public int getIfCount()
{
int counter = 0;
String t = "";
try
{
FileReader file = new FileReader(path);
StringBuffer sb = new StringBuffer();
int tmp;
while ((tmp = file.read()) != -1)
{
sb.append((char)tmp);
}
t = sb.toString();
StringTokenizer stk = new StringTokenizer(t);
String token;
while (stk.hasMoreTokens())
{
token = stk.nextToken();
if (token.contains("/*"))
{
while (stk.hasMoreTokens())
{
if (stk.nextToken().contains("*/"))
break;
}
}
else if (token.contains("//"))
{
while (stk.hasMoreTokens() && stk.nextToken() != "\n")
{
if (stk.nextToken().endsWith("\n"))
break;
}
}
else if (token.contains("\""))
{
if (!token.endsWith("\""))
while (stk.hasMoreTokens())
{
if(stk.nextToken().contains("\""))
break;
}
}
else if (token.startsWith("if"))
counter++;
}
}
catch (FileNotFoundException e)
{
System.out.println("This file does not exist!");
}
catch (IOException e)
{
System.out.println("ERROR");
}
return counter;
}
答案 0 :(得分:0)
无需亲自实施。你正在做的是实现解析器的基础知识。虽然对解析时发生了什么事情有所了解,但我建议使用https://github.com/javaparser/javaparser之类的库。玩得开心。