Java - 多行文本文件中的字符串操作

时间:2014-05-09 17:55:15

标签: java string

我遇到了这个问题(不是与学校有关的)。 原始文本文件包含:

[Name1]
//Feature1.1
//Feature1.2
[Name2]
//Feature2.1
//Feature2.2
[Name3]
//Feature3.1
//Feature3.2
... and so on ...

我想要的是这样的:

[Name1]//Feature1.1
[Name1]//Feature1.2  
[Name2]//Feature2.1
[Name2]//Feature2.2
[Name3]//Feature3.1
[Name3]//Feature3.2
... and so on ...

我需要有关算法(NOT代码)如何制作目标文件的帮助。 我感谢任何帮助。

这就是我在逻辑中得到的: 我将输入分成两个List。(前面的数字是输入文件中的行号) 列表1:

1[Name1]
4[Name2]
7[Name3]

列表2:

2//Feature1.1
3//Feature1.2
5//Feature2.1
6//Feature2.2
8//Feature3.1
9//Feature3.2

然后我将它们合并到finalList中,使用for循环和条件:

for(int i = 0; i < List1.size() - 1; i++)
{
   for(int j = 0; j < List2.size() - 1; j++)
   {
                           // this get the number 1, 4, or 7                    
      if(Integer.parseInt(List1.get(i).substring(0,List1.get(i).indexof("[")) < Integer.parseInt(List1.get(i).substring(0,List2.get(j).indexof("["))) // the second part get 2,3,5,6,8, or 9
      {
         finalList.add(List1.get(i) + List2.get(j));    
      }
   }
}

在此之后,我得到的是:

1[Name1]2//Feature1.1
1[Name1]3//Feature1.2
1[Name1]5//Feature2.1
1[Name1]6//Feature2.2
1[Name1]8//Feature3.1
1[Name1]9//Feature3.2
4[Name2]5//Feature2.1
4[Name2]6//Feature2.2
4[Name2]8//Feature3.1
4[Name2]9//Feature3.2
7[Name3]8//Feature3.1
7[Name3]9//Feature3.2

我想要的是:

1[Name1]2//Feature1.1
1[Name1]3//Feature1.2
4[Name2]5//Feature2.1
4[Name2]6//Feature2.2
7[Name3]8//Feature3.1
7[Name3]9//Feature3.2

在这一步之后,我将把finalList的每个元素中的字符串编辑成:

[Name1]//Feature1.1
[Name1]//Feature1.2
[Name2]//Feature2.1
[Name2]//Feature2.2
[Name3]//Feature3.1
[Name3]//Feature3.2

再次感谢所有的建议和想法。 我一直在努力解决这个问题。关键是我不明白完成这项工作背后的逻辑。

1 个答案:

答案 0 :(得分:1)

最后我解决了这个问题。 这是我做的:

while ((inputLine = br.readLine()) != null)   
{
    if (inputLine.substring(0, 1).equals("["))
    {
        nameList.add(inputLine.substring(0, inputLine.indexOf("]")+1));
        checkPoint = nameList.size() - 1;
    }
    else
    {
        finalList.add(nameList.get(checkPoint) + inputLine );
    }
}