2015-11-26 53 views
0

我只想問一下,如何在java IO中獲得嵌套的圓括號值,那麼解釋是我讀了一個java文件,其中包含多個圓括號。只是混淆瞭如何獲得圓括號內的第一個值和第二個值。這是一個java文件,我讀,在java中獲取嵌套的圓括號值IO

for (int _ii = 0; _ii < n; _ii++) { 
    _data.add(new Integer(_ii)); 
} 

從上面的代碼,我會採取「_ii」內圓括弧的第二值,以配合int變量。

那麼,這是代碼,我用它來讀取java文件:

if (line.contains("(") && line.contains(")")) { 
    Pattern pattern = Pattern.compile("\\(.+?\\)"); 

    Matcher matcher = pattern.matcher(line); 
    while (matcher.find()) {  
     getindex = getBracketContent(line); 

      if(getindex.equals(varGet)){ 
      //Do something 
      } 

     } 

} 

隨後,該方法得到的圓括號中值的索引。

String getBracketContent(String str) { 
    int startIdx = str.indexOf('('); 
    int endIdx = str.lastIndexOf(')'); 

    String content = str.substring(startIdx + 1, endIdx); 
    return content; 
} 

這是在單線括號中的行。如果行中有很多圓括號?仍然混淆。

幫幫我!謝謝。

+0

我希望[我這個答案】(http://stackoverflow.com/questions/33188095/match-contents-within-方括號包括嵌套方括號/ 33270522#33270522)可以暗示你在一個可能的解決方案。 –

+0

感謝您的回答。如何在String.join第8行找到'join'方法? –

+1

使用Java 8.它是String類的一部分。 –

回答

0

下面是它可以用Java來完成:

public static List<String> getBalancedSubstrings(String s) { 
    List<String> subTreeList = new ArrayList<String>(); 
    int level = 0; 
    int lastOpenBracket = -1; 
    for (int i = 0; i < s.length(); i++) { 
     char c = s.charAt(i); 
     if (c == '(') { 
      level++; 
      if (level == 1) { 
       lastOpenBracket = i+1; 
      } 
     } 
     else if (c == ')') { 
      if (level == 1) { 
       subTreeList.add(s.substring(lastOpenBracket, i)); 
      } 
      level--; 
     } 
    } 
    return subTreeList; 
} 

這個方法返回平衡(...)內的所有子。

你可以這樣調用它

String s = "for (int _ii = 0; _ii < n; _ii++) {\n _data.add(new Integer(_ii));\n}"; 
List<String> balanced = getBalancedSubstrings(s); 
System.out.println("Balanced ones: " + balanced); 

Demo Java code輸出:Balanced ones: [int _ii = 0; _ii < n; _ii++, new Integer(_ii)]