1

文字列内で href を返すにはどうすればよいですか。開始位置にアクセスできますが、最後の位置を取得する方法がわかりません:

これが私がこれまでに持っているものです:

    String str = "sadf ad fas dfa http://www.google.com sdfa sadf as dfas";

    int index = str.indexOf("http");
    String href = str.substring(index , ???);

終了インデックスは何にする必要がありますか?

これは j2me を対象としており、ダウンロード フットプリントを最小限に抑える必要があるため、正規表現やサード パーティの正規表現ライブラリを使用できないことに注意してください。

4

3 に答える 3

1

あなたの最善の策は、おそらくインデックスに最も近いスペースをカットするか、スペースが見つからない場合は文字列の最後までカットすることです。

于 2012-06-16T14:55:06.877 に答える
0

アプリケーションで必要な場所が正規表現ライブラリだけである場合、正規表現ライブラリの使用は非常に非効率的です。

次のスペース文字のインデックスを見つけることは、現在のユースケースでは実際には十分かもしれませんが、完全に将来性のあるソリューションではありません。

できることは、URI とは何かの標準的な定義に従って、String からすべての URI を抽出するメソッドを作成することです: http://www.ietf.org/rfc/rfc2396.txt

(実際には、URI の特定の領域を形成する特殊文字と、URI で許可されていない文字を探すことを意味します)

これは、「http」だけでなく、「http://」のインデックスを実際に探す必要があることに気付く方法でもあります。

于 2012-06-18T02:47:51.657 に答える
0

これを確実に行う唯一の方法は、正規表現を使用することです。Java SE では、次のようなことができます。

Pattern p = Pattern.compile("a*b"); // This is the Regular Expression to match
Matcher m = MY_PATTERN.matcher("aaaaaaab"); // This is the String to search through
while (m.find()) { // While there are matches found
    String s = m.group(1);  // Set String s equal to matches of the entire regex
    // s now contains "aaaaaaab"
}

グループは基本的に正規表現の一部です。その一部を括弧で囲むと、「グループ」が作成され、正規表現のその「一部」または「グループ」のみに一致する文字列の一部に選択的にアクセスできます。

J2ME では、次のような正規表現ライブラリをインポートする必要があります。

http://code.google.com/p/regexp-me/

全体的な概念は同じですが、構文がわずかに異なります

于 2012-06-16T15:06:44.480 に答える