2

私は文字列を持っています:

  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
  <li>Milk</li>
  <li>Milk</li>
  <li>Milk</li>
  <li>Milk last</li>

そして、すべてのliタグを相互処理したい(タグ間にテキストを追加するため):

    for (char c: innerText.toCharArray()) {

        if(c == '<'){
            // process the text but in this way 
           //I iterate over whole text as a one line
        }
    }
4

8 に答える 8

5

パーサーを使用したくない場合は、次のように正規表現を使用できます。

String regex = "<li>((?:\\w|\\s)+)</li>";
String list = "..."; //your list

Matcher m = Pattern.compile(regex).matcher(list);

while (m.find()) 
{
    String ofInterest = m.group(1);
    //doSomething
}

((?:\\w|\\s)+)[A-Za-z_0-9]または任意の空白から文字を取得するキャプチャ グループです+。 は、少なくとも 1 文字が必要であることを示します。*間に文字がない場合は、代わりにa を使用してください。と の間に

m.group(1)あるものを単純に抽出します。ここで、は最初のキャプチャ グループに対応します。<li></li>1

キャプチャ グループ内にあるものを、有効と思われるものに置き換えることができます。これは、正規表現

に関するチュートリアルです。幸運を!

于 2013-11-12T08:37:09.990 に答える
1

これを試して

String str ="<li>Coffee</li><li>Tea</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk</li><li>Milk last</li>";
    String[] temp =str.replaceAll("</li>", "").split("<li>");
    String result ="";
    for (String value: temp){
        result = result + "<li>";
        // update the value here if needed
        result = result + value;        
        result = result+ "<li>";
    }


     System.out.println(result);
于 2013-11-12T08:37:16.903 に答える
1

試す:

    String str
            = "<li>Coffee</li>"
            + "<li>Tea</li>"
            + "<li>Milk</li>"
            + "<li>Milk</li>"
            + "<li>Milk</li>"
            + "<li>Milk</li>"
            + "<li>Milk last</li>";
   String[] products= str.substring(4, str.length()-5).split("</li><li>");
    for (String prod : products) {
        System.out.println(prod);  
    }

出力:

Coffee
Tea
Milk
Milk
Milk
Milk
Milk last
于 2013-11-12T08:37:42.247 に答える
1

いくつかの html 要素を解析していることを示しています。jsoup は優れた Java html パーサーの 1 つです。

http://jsoup.org/cookbook/extracting-data/selector-syntax

于 2013-11-12T08:37:52.187 に答える
1

JSoupを使用して HTML テキストを解析するか、DOM パーサーを使用して XML 文字列を解析します。次に、解析された値を for-each ループに渡すことができます。

于 2013-11-12T08:35:40.127 に答える
0

それはすべて1行で行うことができます:

for (String option : innerText.replaceAll("^.*?<li>|</li>.*?$", "").split("</li>\\s*<li>")) {
   System.out.println(option);
}
于 2013-11-12T09:12:32.360 に答える