有什么方法可以按照下面描述的方式添加字符串吗?

时间:2014-10-02 13:54:08

标签: java

我的字符串看起来像这样

 123_NAME

 MONTHLY
 MONTHLY 53_January_2013
 MONTHLY 54_February_2013
 MONTHLY 55_March_2013
 MONTHLY 56_April_2013

 QUARTERLY
 QUARTERLY 51_First_Quarter_2013
 QUARTERLY 54_Second_Quarter_2013
 QUARTERLY 57_Third_Quarter_2013
 QUARTERLY 60_Fourth_Quarter_2013

以上是我从目录中提取并作为列表打印的文件列表。文件位于本地计算机上,与上面的目录结构相同。例如文件夹每月将包含名称为jan,feb,mar等的文件,文件夹季度包含名称为1quarte,2nd quarter等的文件。

我需要附加我正在打印的文件列表

Monthly

Jan 2013
Feb 2013
Continue....

Quarterly

first Quarter 2013
second quarter 2013
Continue...

以下是我的代码的一部分将给出一些想法

     Iterator<String> iterator=listFilesForFolder(folder, startWithDirectory, filesArray).iterator();

    while(iterator.hasNext()){
        String listofFiles=iterator.next();
        StringBuilder str=new StringBuilder(listofFiles);
        String test=str.substring(str.indexOf("/")+1);
        System.out.println(test);

2 个答案:

答案 0 :(得分:0)

我猜您希望以下列方式输出(在同一行中):

Folder > file1, file2, ...

而不是(在新行中):

Folder
File1
File2

如果是这样的话,您是否知道最后没有打印新行的System.out.print()

尝试调整它,插入所需的分隔符(如逗号和角括号)。

此外,由于您使用的是StringBuilder,因此它可以使用append()方法。但是,我认为没有理由将str使用StringBuilder,而不是将其用于test

答案 1 :(得分:0)

在你的while循环中,如果你不介意硬解释,你可以尝试这样的事情。

String[] split = listOfFiles.split("_")
if(split.length > 1) {
    if(split[0].contains("MONTHLY")) { //unique case
        System.out.println(split[1].substring(0, 3) + " " + split[2]);
    }
    else {
        for(int i = 1; i < split.length(); i++) {
            System.out.print(split[i] + " ");
        }
        System.out.println("");
    }
}
else {
    System.out.println("\n" + listOfFiles + "\n");
}