1
Q
分裂遞歸組
A
回答
1
這是一個使用堆棧的可能解決方案。 (實施Avlin鋪位的評論。)
public static Iterable<String> split(String s) {
List<String> result = new LinkedList<String>();
Stack<String> stack = new Stack<String>();
Pattern pattern = Pattern.compile("[,\\[\\]]|.+?");
Matcher matcher = pattern.matcher(s);
stack.push("");
while (matcher.find()) {
String token = matcher.group();
if (token.equals("[")) {
stack.push("");
} else if (token.equals("]")) {
if (! stack.peek().isEmpty())
result.add(join(".", stack));
stack.pop();
stack.pop();
stack.push("");
} else if (token.equals(",")) {
if (! stack.peek().isEmpty())
result.add(join(".", stack));
} else {
stack.pop();
stack.push(token);
}
}
if (! (stack.isEmpty() || stack.peek().isEmpty()))
result.add(join(".", stack));
return result;
}
public static String join(String sep, Iterable<String> it) {
// Return it[0] + sep + it[1] + sep + .... + it[lastIndex]
String joined = "";
boolean first = true;
for (String s : it) {
if (first)
first = false;
else
joined += sep;
joined += s;
}
return joined;
}
實例應用:
String text = "a,b,c[a,b,c[a]],d";
for (String s : split(text))
System.out.println(s);
見Demo run。
相關問題
- 1. 使用遞歸分裂數組java
- 2. 遞歸分裂陣列
- 3. 遞歸Linq分組
- 4. C# - 遞歸分組
- 5. 遞歸分割數組
- 6. R中的遞歸分組
- 7. XSLT分組遞歸問題
- 8. 分裂數組值
- 9. 分裂byte []數組
- 10. 查詢來獲取歸類套分裂
- 11. r分裂和迭代簡單迴歸
- 12. 遞歸數組
- 13. 遞歸元組
- 14. 區分簡單遞歸和多遞歸
- 15. 遞歸查詢分組結果(SQL Server)
- 16. 組陣列分鐘經由遞歸
- 17. 字典遞歸按值分組鍵
- 18. 分裂與子組串
- 19. 分裂多維數組
- 20. 分裂整數數組
- 21. 分裂/子串數組 - PHP
- 22. Isabelle:阻止分裂元組
- 23. 分裂PHP數組由值
- 24. 分裂多維數組
- 25. Python:分裂和分裂
- 26. 遞歸方分區
- 27. 分割數遞歸
- 28. 遞歸分數2
- 29. 遞歸從數組
- 30. PHP數組遞歸
可能更容易(更可能是可能的),而正則表達式。 – Jerry
這不是一個正則表達式的東西。解析它自己。 –
我想是的。謝謝。 – mortenoh