簡體   English   中英

包裹 <li> 標簽與 <ul> 在RTE文字中標記

[英]Wrap <li> tags with <ul> tag in RTE text

我有一個RTE文本,其格式如下:

<li> text </li> 
<li> text </li> 
<p>  text </p> 
<p>  text </p>
<li> text </li>
<li> text </li>

這里的問題是,“ li”標簽沒有包裝在“ ul”標簽內。 由於要編寫遷移腳本,因此我想使用Java實現此目的。 我在Jquery中找到了答案,但是很難在Java這樣的解決方案中找到答案。

注意:不確定它是否重要,但這是客戶端在Excel工作表中提供的用於遷移的RTE文本。

以上文本的預期結果如下:

<ul>
   <li> text </li> 
   <li> text </li> 
</ul>
   <p>  text </p> 
   <p>  text </p>
<ul>
   <li> text </li>
   <li> text </li>
</ul>

如果您只是以字符串形式返回它,那么這里是一個正則表達式解決方案,它應該可以起作用,或者至少可以作為一個良好的起點。

String pattern1 = "(?<!</li>\\s{0,100})(<li>)";
String replace1 = "<ul><li>";

String pattern2 = "</li>(?!\\s{0,100}<li>)";
String replace2 = "</li></ul>";

該模式將查找<li>標記,該標記之前沒有</li>標記(忽略它們之間的空白),然后將其替換為開頭的<ul><li>標記。

然后,它查找任何</li>未后跟一個標簽<li>標簽,並用替換</li></ul>標簽

下面的完整代碼,或在這里是一個活生生的例子

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {

   public static void main( String args[] ) {
      // String to be scanned to find the pattern.
      String input = "<li> text </li> <li> text </li> <p>  text </p> <p>  text </p><li> text<span>more test</span> </li><li> text </li>";
      String pattern1 = "(?<!</li>\\s{0,100})(<li>)";
      String replace1 = "<ul><li>";

      String pattern2 = "</li>(?!\\s{0,100}<li>)";
      String replace2 = "</li></ul>";

      // Create a Pattern object
      Pattern r1 = Pattern.compile(pattern1);
      Pattern r2 = Pattern.compile(pattern2);
      // Now create matcher object.
      Matcher m1 = r1.matcher(input);

      input = m1.replaceAll(replace1);

      Matcher m2 = r2.matcher(input);
      input = m2.replaceAll(replace2);
      System.out.println(input);

   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM