我正在尝试从单行字符串重新排列字符串的内容
(file).DS_Store(~file)(folder)server(file).DS_Store(~file)(folder)test1(~folder)(folder)test2(~folder)(folder)test3(file).DS_Store(~file )(文件夹)test4(文件).DS_Store(~文件)(文件夹)test5(文件).DS_Store(~文件)(文件)item.txt(~文件)(~文件夹)(~文件夹)(~文件夹)( 〜文件夹)(文件)text.txt(〜文件)
到一个多行字符串,如
(file).DS_Store(~file)
(folder)client
(folder)test6(~folder)
(folder)test7
(folder)test9
(folder)test10
(file)itemClient(~file)
(~folder)
(~folder)
(~folder)
(folder)test8(~folder)
(~folder)
(file)test.txt(~file)
(file)text.txt(~file)
我知道递归会对我有所帮助,但是当我尝试编写递归函数时,它只检查第一个分隔符并停止,而不检查字符串的其余部分。这是我正在使用的代码。
public String getFileStructure(String list, int level){
String str = list;
String ret = "";
String fileStart = "(file)";
String fileEnd = "(~file)";
String folderStart = "(folder)";
String folderEnd = "(~folder)";
if (!list.isEmpty()) {
for (int i = 0; i < level; i++) {
ret+="\t";
}
if (str.startsWith(folderStart)) {
ret+= "[" + str.substring(str.indexOf(folderStart)+8, str.indexOf(folderEnd)) + "]\n";
getFileStructure(str, level + 1);
} else {
ret+= str.substring(str.indexOf(fileStart)+6, str.indexOf(fileEnd));
}
}
return ret;
}
但它只是返回
.DS_Store
.DS_Store