1

在 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
    }
}
4

1 回答 1

2

您需要遍历字符串并从起始位置开始计算开括号和右括号并将它们匹配起来。问题是,在某些情况下您需要忽略它们(这里只是几个示例):

  • 在行注释中(在 a//"new line"之间)
  • 在块注释中(在/*(不被行注释隐藏)和之间*/
  • String文字中(在两个匹配"的 's 之间(忽略转义 ( \",但注意\\"or \\\"!)))
  • char文字中(在两个匹配'的 's 之间)
  • 可能更多

您可以在遍历字符串时保留所有这些计数器,或者您可以提出一个正则表达式来匹配整个函数体(包括列表中的所有这些情况),然后应用一次并查看匹配的位置索引在找到尸体后结束。

在所有情况下,任何一个都应该参与其中,所以我建议你去谷歌看看你是否能找到一些预制的正则表达式的例子,例如。

于 2013-02-21T00:46:14.037 回答