我正在研究一种方法,该方法需要将表示Type声明的字符串解析为其组成部分。例如,字符串
"List<T extends Integer>"
将生成以下数组:
["List", "T", "extends", "Integer"]
对于像这样的简单情况,我可以使用apache-commons的StringUtils类的'substringsBetween'方法来查找标记内的部分。我遇到的问题是substringsBetween方法似乎无法处理嵌套标记。如果我拨打以下电话:
StringUtils.substringsBetween("HashSet<ArrayList<T extends Integer>>", "<", ">");
我的结果是:
["ArrayList<T extends Integer"]
有没有办法使用apache commons做到这一点,还是我需要手工解析字符串?如果我需要手动解析它,是否有一个很好的算法示例呢?
答案 0 :(得分:0)
您可以拆分空格并更改要忽略的字符括号。
例如......
String example = "List<T extends Integer>";
example = example.replace('<', ' ').replace('>', ' ');
String[] word = example.split(" ");
for(int i=0; i< word.length;i++) {
System.out.print(word[i]+" ");
}
如果您希望内括号具有相同的行为,您可以执行相同的操作,只需解析字符串中的唯一字符。
String exampleTwo ="HashSet<ArrayList<T extends Integer>>";
exampleTwo = exampleTwo.replace('<', '-').replace('>', '-');
String[] innerWord = exampleTwo.split("-");
for(int i=0; i< innerWord.length;i++) {
System.out.print(innerWord[i]+" ");
}
//position is the same number of brackets
System.out.println(innerWord[0]); //HashSet
System.out.println(innerWord[1]); //ArrayList
System.out.println(innerWord[2]); //T extends Integer