2017-06-12 11 views
0

上の文字列のサブストリング:私は各HTMLクロージングマークアップの後に文字列を分割し、変数にマークアップを取得する必要がありJavaは、私は以下のようなHTMLマークアップを含む文字列持っているすべて閉じて、HTMLマークアップ

<b> Hi </b> i'm a <i> beautifull </i> <u> string </u> 

をし、次のような別の変数のテキスト:

startMarkup: <b> text: Hi  endMarkup: </b> 
startMarkup:  text: i'm endMarkup: 
startMarkup: <i> text: beautifull endMarkup: </i> 
startMarkup: <font size="5"> text: string endMarkup: </font> 

これを達成するための良いアルゴリズムを提案してください。

+1

regex –

+0

をご覧ください。https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)またはhttps:// jsoup.org/またはplain regexpです。 – Lemonov

+0

これは、RegEx:https://regexone.com/の使い方を学ぶための優れたリソースであることがわかりました。あなた自身のRegExをローカルでテストするには、次のようなものをダウンロードすることができます:http://regexsr.oxgva.com/ – khriskooper

答えて

1

この

//'main' method must be in a class 'Rextester'. 
//Compiler version 1.8.0_111 

import java.util.*; 
import java.lang.*; 

class Rextester 
{ 
public static void main(String args[]) 
{ 
    List<String> startmarkups = new ArrayList<>(); 
    List<String> endmarkups = new ArrayList<>(); 
    List<String> texts = new ArrayList<>(); 
    String s1 = "<b> Hi </b> i'm a <i> beautifull </i> <u> string </u>"; 
    //Get startmarkup and endmarkups into respective array 
    String mk[] = s1.split(">"); 
    for(int i = 0; i < mk.length; i++){ 
     System.out.println(mk[i]); 
     if(!mk[i].trim().startsWith("<")){ 
      if(mk[i].indexOf("<") >= 0){ 
       if(mk[i].indexOf("/") >= 0){ 
        endmarkups.add("</"+(mk[i].split("/")[1])+">"); 
        startmarkups.add("<"+(mk[i].split("<")[1])+">"); 
       }else{ 
        endmarkups.add(""); 
        startmarkups.add(""); 
       } 
      } 
     } 
    } 
    //Get text into texts array 
    for(int i = 0; i < mk.length; i++){ 
     if(!mk[i].trim().startsWith("<")){ 
      if(mk[i].indexOf("<") >= 0) 
       texts.add((mk[i].split("<")[0])); 
     } 
    } 
    for(int i = 0; i < startmarkups.size(); i++) { 
     System.out.print("Startmarkup: " + startmarkups.get(i) + "\t"); 
     System.out.print("Text: " + texts.get(i) + "\t"); 
     System.out.print("Endmarkup: " + endmarkups.get(i) + "\t"); 
     System.out.println(); 
    } 

} 
} 

は、HTML文字列をs1の変数を交換してみます。

関連する問題