0

を使用して文字列から部分文字列を引き出そうとしていますjava.Util.Scan

部分文字列は元の文字列の" <TD class=MoreB align=center>" と " " の間にあります</TD>

これはコードです:

public static String pullStringOut(String str)
{
    String stringer = null;

    Scanner scanner = new Scanner(str);
    scanner.findInLine("<TD class=MoreB align=center>");

    while (scanner.hasNext() && scanner.next() != "</TD>")
    {
        stringer+= " " + (scanner.next());
    }

    return stringer;
}

しかし、うまくいきません。

元の文字列から:

" <TD class=MoreB align=center>TextTextTextText</TD></TR></TABLE> }"

次の結果が得られます。

" TextTextTextText</TD></TR></TABLE> }"

予想の代わりに

「テキストテキストテキストテキスト」

4

3 に答える 3

1

いくつかの問題:

  • scanner.next() != "</TD>"trueオペランドが同じオブジェクトにならないため、常になります。を使用し!scanner.next().equals("</TD>")ます。JLS の参照等価演算子 == および != セクションから:

    != の結果は、オペランド値が両方とも null であるか、両方が同じオブジェクトまたは配列を参照している場合は false です。それ以外の場合、結果は true です。

  • scanner.next()ループの各反復で 2 回呼び出されています。への変更:

    String line;
    while (scanner.hasNext() && !(line = scanner.next()).equals("</TD>"))
    {
        stringer+= " " + line;
    }
    
于 2012-05-28T13:55:14.410 に答える
0

正規表現を使用できます。

何かのようなもの :

    Pattern p = Pattern.compile("/\<TD class=MoreB align=center>(.*)\<\/td\>/"); 
Matcher m = p.matcher(str); 
while(m.find()) { 

  //do whatever you want here
 }

(未検証)

于 2012-05-28T13:58:31.923 に答える