2011-08-10 49 views
0

他の文字列で文字列を検索する方法はありますか?検索を使用して文字列から部分文字列を取得する

私はこの種類のファイルがあります:私はすべての<br>年代を削除したと私はのような文字列を検索します

<br> 
Comment EC00: 
<br> 
The EC00 is different from EC12 next week. The EC00 much wetter in the very end, which is not seen before. 
<br> 

<br> 

<br> 
Comment EC12: 
<br> 
The Ec12 of today is reliable. It starts cold, but temp are rising. From Sunday normal temp and wet, except for a strengthening high from SE in the very end. 
<br> 

『コメントEC12:』の後に何が来るのか取得するために:

The Ec12 of today is reliable. It starts cold, but temp are rising. From Sunday normal temp and wet, except for a strengthening high from SE in the very end. 

または多分私がラインの読み取りを停止するには、少なくともどこ知っているように、すべての<br>年代を残すために良いアイデアかもしれない。..

PSこれらのコメントには、文書内に複数の出現がある可能性があります。

EDIT: 私は、このソリューションを開始するには、少なくとも良い場所、出現箇所を見つけるために大丈夫だと思う.. 私が何をして知っているので、これは、それは私にとって非常に良い働き、最後のバージョンでありますHTMLは静的ではありません。しかしsimmilarの何かをしたい人は、最後のものと同様の方法で最初の2つのループを書き直すことができます。テキストファイルの)

     StringTokenizer parser = new StringTokenizer(weatherComments); 
         String commentLine = ""; 
         String commentWord = ""; 

         while (parser.hasMoreTokens()) { 
          if (parser.nextToken().equals("Comment")) { 
           String commentType = parser.nextToken(); 
           if (commentType.equals(forecastZone + ":")) { 
            parser.nextToken(); //first occured <br> 
            commentWord = parser.nextToken(); 
            while(!commentWord.equals("<br>")){ 
             commentLine += commentWord + " "; 
             commentWord = parser.nextToken(); 
            } 
           commentLine += "\n"; 
           System.out.println(commentLine); 
           } 
          } 
         } 

PPS コードをもっと小さく見えるようにたくさんのライブラリをダウンロードする前に、まず自分で解決する方法を考えてください。

答えて

0

から:

String html = ...; 
String search = "Comment EC12:"; 
int comment = html.indexOf(search); 
if (comment != -1) { 
    int start = comment + search.length(); 
    int end = start + ...; 
    String after = html.substring(start, end); 
    ... 
} 

問題は、テキストの終わりを見つけることです。だから、<br>を交換し、タグにHTMLを分割しないように役に立つことがあります。

String html = ...; 
String[] parts = html.split("\\p{Space}*<br>\\p{Space}*") 
for (int i = 0; i < parts.length; i += 2) { 
    String search = parts[i]; 
    String after = parts[i + 1]; 
    System.out.println(search + "\n\t" + after); 
} 

の例では、次のように出力されます:あなたが達成したい内容に応じて

Comment EC00: 
    The EC00 is different from EC12 next week. The EC00 much wetter in the very end, which is not seen before. 
Comment EC12: 
    The Ec12 of today is reliable. It starts cold, but temp are rising. From Sunday normal temp and wet, except for a strengthening high from SE in the very end. 
+0

を見つけることができますか?この方法で初めての出現しか得られませんか? (最初の部分) –

+0

それは良い解決策ですが、私が必要としたのは、1行の最後に来てください:Comment EC00:そして残りの部分を読む(コメント)。だから私はStringTokenizerを使って少し違ったやり方でやったので、私は単語の後で言葉を読んでいたので、多くの助けになった –

0

まずは空白行を削除して< br>と私はBNDMのようなアルゴリズムを実装しますStringSearchのようなライブラリの検索や使い方の改善あなたは、単にindexOf()を使用しようとすることができ、サイトの「Javaにおける高性能パターンマッチングアルゴリズム」http://johannburkard.de/software/stringsearch/

+0

多分それは良いですが、私はそのような小さな仕事のために外部ライブラリを使用するのが好きではありません –

+0

フォーマットが常にそれよりずっと単純です。 < br >と空白行を削除し、すべての行でコメントを検索することができます。あなたがコメントを見つけたら、次の行を取る。 – Iraklis

+0

ええ、私はそうだと思っていましたが、問題はいくつかの行にコメントを広げることができるということです。その場合、少なくとも1つのコメントが終了し、もう1つのコメントが始まるときには必ずタグが必要です。 –

関連する問題