2016-11-29 71 views
0

我有一个纯文本文件,格式如下:阅读与多个标志java的一个纯文本文件

-~-http://www.google.com 
    [email protected]+ 
    [email protected] Google 
-~-http://www.somewebpage.com 
    [email protected] 
     Google 
     Search 
    [email protected] to Google 
-~-http://www.mycoolwebpage.com 
    [email protected] is Awesome!!! 

我需要在链接阅读(记为 - 〜 - ),并将其放置在一个List<String>调用链接。我还需要读取输出(用 - @ - 表示)并将它们放入一个名为outputs的List<List<String>>中。我需要阅读所有文本,直到下一个标记( - 〜 -/\ t - @ - ),并且我还需要知道文本之前的哪个标记。我试过Delimiter,但我不确定我能够知道哪个Delimiter之前String

+0

你需要发布一些你的代码给人来帮助你。 –

+0

只需读取每行并在代码中处理它,而不必在读取文件时使用特殊的分隔符。 –

+0

@Alexey Soshin我想弄清楚我应该怎么做。我有的代码是一个方法调用:扫描器s =新的扫描器(新文件(“myFile.txt”)); – mpowell48

回答

1

我会避免使用扫描器分隔符。只要阅读每一行并在代码中处理它。对于每一行,首先丢弃(或忽略)任何前导空格。然后,如果该行以分隔符开头,请包装任何挂起的链接/输出(请参阅下面的含义)。然后,

  • 如果符合-~-开始,从那里到行尾的文本是一个链接的开始,所以开始积累链接文字(中,说StringBuilder)。此外,如果您有一个非空的输出列表,请将列表追加到列表output列表中。
  • 如果它以[email protected]开头,它是输出的开始,所以开始累积输出文本。
  • 如果它既不是分隔符,也是延续线,所以将其余的行附加到当前的链接/输出累加器(可能在追加空格或换行符后)。

要“收官之任何未决的链接/输出”,在StringBuilder的当前内容转换为String,并添加到相应的列表。还要将任何非空输出列表追加到output

在这里有很多簿记的细节我没有提到,但这是基本的想法。

+0

正是我在找的东西。谢谢。 – mpowell48