1

Objective-C から Java にいくつかのコードを移動しています。プロジェクトは、XML/HTML パーサーです。目的の c では、ほとんどの場合、scanUpToString("mystring"); のみを使用します。方法。

Java Scanner クラスを見ましたが、すべてがトークンに分割されています。私はそれをしたくありません。部分文字列の出現までスキャンし、文字列全体でスキャナーの現在の位置を追跡できるようにしたいだけです。

どんな助けでも大歓迎です!

編集

もう少し詳しく言うと。Scanner にトークン化させたくありません。

String test = "<title balh> blah <title> blah>";
    Scanner feedScanner = new Scanner(test);
    String title = "<title";
    String a = feedScanner.next(title);
    String b = feedScanner.next(title);

上記のコードでは、feedScanner.next(title); が必要です。次の発生の終わりまでスキャンする"<title"

実際に何が起こるかというと、feeScanner.next が最初に呼び出されたときはデフォルトの区切り文字が空白であるため機能しますが、2 回目に呼び出されたときは失敗します (私の目的では)。

4

3 に答える 3

1

これは String クラス (Java.lang.String) で実現できます。

  1. まず、部分文字列の最初のインデックスを取得します。

    int first_occurence= string.indexOf(substring);

  2. 次に、文字列全体を反復処理し、部分文字列の次の値を取得します

    int next_index=indexOf( str,fromIndex);

  3. 値を保存する場合は、それらをラッパー クラスに追加し、arraylist オブジェクトに追加します。
于 2012-05-12T22:59:32.160 に答える
0

多分 String.split はあなたのためのものですか?

s = "The almighty String is mystring is your String is our mystring-object - isn't it?";
parts = s.split ("mystring");

結果:

Array("The almighty String is ", " is your String is our ", -object - isn't it?)

あなたの「mystring」の間にある必要があることを知っています。開始と終了がよくわからないので、いくつか必要かもしれませんs.startsWith ("mystring") / s.endsWith

于 2012-05-12T22:55:53.253 に答える
0

Stringのメソッドを直接使用するだけで、これは本当に簡単になります。

String test = "<title balh> blah <title> blah>";
String target = "<title";
int index = 0;
index = test.indexOf( target, index ) + target.length();
// Index is now 6 (the space b/w "<title" and "blah"
index = test.indexOf( target, index ) + target.length();
// Index is now at the ">" in "<title> blah"

文字列をウォークスルーする以外に実際に何をしたいかによって、さまざまなアプローチが良い/悪い場合があります。blah> blahたとえば、 の間の文字列を取得したい場合は<title、 aScanner 便利です。

String test = "<title balh> blah <title> blah>";
Scanner scan = new Scanner(test);
scan.useDelimiter("<title");
String stuff = scan.next(); // gets " blah> blah ";
于 2012-05-12T23:23:41.283 に答える