2009-05-04 10 views
1

テキストファイル(またはXMLファイル)を文字列全体として表現し、特定の文字列を検索(または一致)するにはどうすればよいですか?テキストファイルをJavaの単一ユニットとして表し、テキスト内の一致する文字列

私はBufferedReaderのオブジェクト作成した

:Scannerクラスを使用して

//Scanner scantext = new Scanner(input); 
//Scanner scantext = new Scanner(input).useDelimiter(""); 
Scanner scantext = new Scanner(input).useDelimiter("\n"); 
while (scantext.hasNext()) { ... } 

:このような

BufferedReader input = new BufferedReader(new FileReader(aFile)); 

、その後、私は別の区切り文字を指定するには、そのオプションでScannerクラスを使用しようとしましたが、このように私はテキストを行単位で、または単語単位で読むことができますが、それは私が処理したいテキストの中に時々あるので、助けにはなりません

</review><review> 

と私は言っています: ""が見つかるまで、テキストのどこにでも "<review>"が見つかった場合は、次の次の行(またはテキスト)で何かをしてください。問題は、<review></review>がテキストの別の場所にあり、時には他のテキストに貼り付けられることです(したがって、区切り文字として空白がわかりません)。

私は、正規表現APIをJava(PatternクラスとMatcherクラス)で使用することが考えられていましたが、特定の文字列や行と一致するように見えます。これは私がそれらについて読んだことからの私の印象でした)。この場合、どのような構造/メソッド/クラスを使用すべきか教えてください。ありがとうございました。

+0

私はそれを投稿した後に何度かテキストを編集しているので、すべてが今読まれているので、私は望みます(見えないものには申し訳ありません) – user42155

答えて

3

正規表現でXMLを解析しないでください。それは痛みだけにつながる。 非常に素晴らしい existingXMLAPIsの多くが既にJavaにあります。なぜそれらを再発明しようとしますか?

とにかく、テキストファイル内の文字列を検索するには、あなたがする必要があります

  1. ロードでは、文字列(example
  2. などのファイルは
  3. 使用Matcherに検索するためにPatternを作成します。任意のマッチを繰り返す
+0

xom - http://www.xom.nu/ - my favオアイト – lucas

1

構造化されたxmlファイルで作業しようとしているように見えますが、javax.xml.parsers.DocumentBuilderまたは文書を解析するためにAPIsに組み込まれています。

1

XMLパーサを使用します。

またはexampleのようにxpathを使用してください。

1

私は、Javaの正規表現API(パターンとMatcherのクラス)を使用するかもしれないと思っているが、彼らは、特定の文字列または行と一致するように見える、と私は一つの連続した文字列としてテキストを持つようにしたい

あなたは、XMLファイルを文字列に読み込んだり、その正規表現APIを使ってXMLファイルを操作できないのですか?

ファイルをStringなどで簡単に読み取ることができます。FileUtils、Apache Commons IOreadFileToString(File file, String encoding)を参照してください。

1

私はここだと思う...

0

を私はまた、APIを解析するXMLを使用することをお勧めします...しかし、あなたは唯一の「レビュー」タグの場合に何かをしたいと、多分あなたはより良いDOMよりもSAXを使用することができます、我々は文字列に、テキストファイル内の個々の行をコピーすることができ、その後の文字列(行)と、サブストリング(検索文字列)を一致させるために

を試してみてくださいしかし、のようなメタキャラクタをexcuting /または中にエラーが生じ#など。

関連する問題