查找Java函数的开头和结尾

时间:2013-02-21 00:38:46

标签: java metaprogramming syntax-highlighting

在Java中,是否有可能为Java源代码示例生成相应的大括号,给定源代码为字符串,以及大括号的开头?

public class FindFunctionStartAndEnd{
    public static Object findCorrespondingCurlyBrace(String sourceCode, string startingPosition){
        //return the string position that corresponds to the matching curly brace
        //the input string should be the source code of a Java class
        //if sourceCode is not valid Java code, return false
    }
}

1 个答案:

答案 0 :(得分:2)

您需要遍历字符串并从起始位置开始计算打开和关闭括号并将它们匹配。问题是,有几种情况你需要忽略它们(这里只是几个例子):

  • 在一行注释中(//“新行”之间)
  • 阻止评论中的
  • /*之间(未被行评论隐藏)和*/
  • 位于String个文字中(两个匹配的"之间)(忽略转义(\",但请注意\\"\\\"!))< / LI>
  • char文字中(两个匹配的'之间)
  • 可能更多

你可以在运行String时保留所有这些的计数器,或者你可以提出一个与整个函数体相匹配的正则表达式(包括列表中的所有这些情况),然后应用它一次,然后看看匹配的索引在找到正文后结束的位置。

在所有情况下,任何一方都应该参与其中,所以我建议您点击Google以查看是否可以找到一些预制正则表达式的示例。