有一字符串格式如下:(A(B)(C(D)(E))F) 字符串中的括号成对出现,写一java函数取出第N(以左括号出现的顺序来索引)对括号里的内容。
public class Csdn1 {
public static void main(String[] args) {
String str = "(A(B)(C(D)(E))F)";
System.out.println(getContent(5, str));
}
public static String getContent(int n, String str) {
int start = -1, end = 0;
char[] arr = str.toCharArray();
int count = 0, j = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == '(') {
count++;
if (count == n) {
start = i;//找到,记录开始位置
j = 0; // 开始位置重置
}
if (i >= start) {
j++; // 左( ++
}
}
if (arr[i] == ')') {
if (i >= start) { //有开始位置才开始匹配结束
j--; // 右( --
}
if (j == 0) { //左右括号匹配完成后记录结束位置并跳出循环
if (start == -1) {
System.out.println("第" + n + "个元素不存在!");
} else {
end = i + 1;
return str.substring(start, end);
}
}
}
}
return "";
}
}