国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java操作HTML格式字符串的標(biāo)簽和屬性

DDreach / 1424人閱讀

摘要:首先需要?jiǎng)?chuàng)建一個(gè)類對象,表示需要匹配的規(guī)則。調(diào)用方法,如果能匹配到則返回,否則返回,根據(jù)業(yè)務(wù)需求這里可以添加判斷如果返回的是,這時(shí)候調(diào)用方法,可以獲取到匹配到的字符串,這里的內(nèi)容是,不包括匹配規(guī)則的內(nèi)容。

在使用Editor(所見即所得編輯器)的時(shí)候,有時(shí)候可能會碰到需要在后臺修改編輯器的內(nèi)容,而且這些內(nèi)容還都是HTML格式的數(shù)據(jù),這個(gè)時(shí)候如果需要定位到某個(gè)標(biāo)簽的話就比較困難,畢竟是后臺語言,不像前端的js一樣可以在頁面上直接取到某個(gè)標(biāo)簽,今天就分析一下使用Java如何操作HTML格式的字符串。

首先需要?jiǎng)?chuàng)建一個(gè)Patten類對象,表示需要匹配的規(guī)則。

String regxpForEmbedTag = "]*)s*/>";
Pattern pattern = Pattern.compile(regxpForEmbedTag);

比如,這里是匹配embed標(biāo)簽的規(guī)則,在編輯器里面視頻生成的格式就是這個(gè)標(biāo)簽(現(xiàn)在有些編輯器可能不是了),compile方法還可以給第二個(gè)參數(shù),可以傳Pattern.CASE_INSENSITIVE進(jìn)去,這樣匹配規(guī)則就不區(qū)分大小寫了。

然后調(diào)用matcher方法,傳入待匹配內(nèi)容,得到Matcher對象。

String content="";
Matcher matcher = pattern.matcher(content);

調(diào)用find方法,如果能匹配到則返回true,否則返回false,根據(jù)業(yè)務(wù)需求這里可以添加判斷;

boolean result = matcher.find();

如果返回的是true,這時(shí)候調(diào)用group方法,可以獲取到匹配到的字符串,

String embedStr = matcher.group(1);

這里embedStr的內(nèi)容是height="400 width="480"" autostart="false" src="http://localhost:8080/uploadFile/test.mp4",不包括匹配規(guī)則的內(nèi)容。

group方法必須在find方法調(diào)用之后,否則會報(bào)錯(cuò),group也可以不傳參數(shù)得到結(jié)果跟參數(shù)為0是一樣的,這里參數(shù)的意思為:把正則表達(dá)式按照()分組,序號從1開始,在當(dāng)前匹配到字符串中獲取指定的分組匹配到的內(nèi)容,這說起來有點(diǎn)拗口,比如上面的正則表達(dá)式為]*)s*/>,則可以用的參數(shù)只有0和1(如果傳入的參數(shù)大于分組的序號則會報(bào)異常),在執(zhí)行完matcher.find()之后,使用group()group(0)得到的結(jié)果是

而如果使用group(1)則得到的結(jié)果為
height="400 width="480" autostart="false" src="http://localhost:8080/uploadFile/test.mp4"

內(nèi)容需要匹配多次則可以循環(huán)調(diào)用find()方法。

如果我們現(xiàn)在要把width這個(gè)屬性修改為100%,可以這樣做

String regxpForWidth = "width="([^"]+)"";
Matcher matcherForWidth = Pattern.compile(regxpForWidth).matcher(embedStr);
if (matcherForWidth.find()){
    StringBuffer temp = new StringBuffer();
    matcher.appendReplacement(temp, "width="100%"");
    matcher.appendTail(temp);
}

這里通過appendReplacement方法,把匹配到的內(nèi)容替換成指定的字符串,注意這里替換的時(shí)候,被替換的內(nèi)容是包含匹配規(guī)則的,所以在這里需要自己加上匹配規(guī)則的內(nèi)容,也就是width="",appendReplacement方法有兩個(gè)參數(shù),第一個(gè)參數(shù)用來存放替換后的字符串,類型為StringBuffer,第二個(gè)參數(shù)為替換的目標(biāo)值,這里在執(zhí)行完appendReplacement方法之后,temp的值為height="400 width="100%",temp等于匹配到的字符串之前的所有內(nèi)容加上被匹配后的內(nèi)容,但是這里丟失了后面的內(nèi)容,所以最后我們執(zhí)行了appendTail方法,可以把匹配到的字符串之后的所有內(nèi)容添加到temp中。

下面是一個(gè)簡單的替換例子:

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

public class Test {

    public static void main(String[] args) {
        String content = "這是內(nèi)容開始
" + "
" + "這是內(nèi)容中間
" + "
" + "這是內(nèi)容結(jié)尾"; String regxpForEmbedTag = "]*)s*/>"; Matcher matcher = Pattern.compile(regxpForEmbedTag).matcher(content); StringBuffer sb = new StringBuffer(); while (matcher.find()) { String contentTemp = matcher.group(1); contentTemp = replaceContentByPartten(contentTemp, "src="([^"]+)"", "src="http://localhost:8080/uploadFile/test.mp4""); contentTemp = replaceContentByPartten(contentTemp, "width="([^"]+)"", "width="100%""); matcher.appendReplacement(sb, ""); } matcher.appendTail(sb); System.out.println(sb.toString()); } public static String replaceContentByPartten(String content, String partten, String target) { Matcher matcher = Pattern.compile(partten, Pattern.CASE_INSENSITIVE).matcher(content); if (matcher.find()) { StringBuffer temp = new StringBuffer(); matcher.appendReplacement(temp, target); matcher.appendTail(temp); return temp.toString(); } else { return content; } } }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/49579.html

相關(guān)文章

  • Java操作HTML格式符串標(biāo)簽屬性

    摘要:首先需要?jiǎng)?chuàng)建一個(gè)類對象,表示需要匹配的規(guī)則。調(diào)用方法,如果能匹配到則返回,否則返回,根據(jù)業(yè)務(wù)需求這里可以添加判斷如果返回的是,這時(shí)候調(diào)用方法,可以獲取到匹配到的字符串,這里的內(nèi)容是,不包括匹配規(guī)則的內(nèi)容。 在使用Editor(所見即所得編輯器)的時(shí)候,有時(shí)候可能會碰到需要在后臺修改編輯器的內(nèi)容,而且這些內(nèi)容還都是HTML格式的數(shù)據(jù),這個(gè)時(shí)候如果需要定位到某個(gè)標(biāo)簽的話就比較困難,畢竟是后...

    wean 評論0 收藏0
  • 工具集核心教程 | 第六篇: Freemarker模板引擎入門到進(jìn)階

    摘要:到目前為止,使用越來越廣泛,不光光只是它強(qiáng)大的生成技術(shù),而且它能夠與進(jìn)行很好的集成。注意使用數(shù)字范圍來定義集合時(shí)無需使用方括號數(shù)字范圍也支持反遞增的數(shù)字范圍如對象對象使用花括號包括中的對之間以英文冒號分隔,多組對之間以英文逗號分隔。 Freemarker的介紹 ??Freemarker 是一款模板引擎,是一種基于模版生成靜態(tài)文件的通用 工具,它是為程序員提供的一個(gè)開發(fā)包,或者說是一個(gè)類...

    趙連江 評論0 收藏0
  • XML基礎(chǔ)知識歸納

    摘要:它提供了一套非常省力的,可通過,以及類似于的操作方法來取出和操作數(shù)據(jù)。 XML:可擴(kuò)展標(biāo)記型語言 隨著json等一些技術(shù)的普及,似乎xml的路子越來越窄,雖然xml的一些功能被其他的一些技術(shù)代替,但是學(xué)習(xí)xml還是非常有必要,如果用xml存儲一些大量數(shù)據(jù),還是有一定優(yōu)勢的,就算你不管這些,但是現(xiàn)有的很多框架以及技術(shù)的配置文件都存在于xml中,最起碼你得對它的結(jié)構(gòu)以及一些基本用法有一定了...

    Warren 評論0 收藏0
  • java第三方包學(xué)習(xí)之jsoup

    摘要:下面隆重介紹簡介是一個(gè)解析的第三方庫,它提供了一套非常方便的,可使用,以及類的操作方法來取出和操作數(shù)據(jù)。一個(gè)文檔的對象模型文檔由多個(gè)和組成其繼承結(jié)構(gòu)如下繼承繼承繼承一個(gè)包含一個(gè)子節(jié)點(diǎn)集合,并擁有一個(gè)父。 前言 使用python寫爬蟲的人,應(yīng)該都聽過beautifulsoup4這個(gè)包,用來它來解析網(wǎng)頁甚是方便。那么在java里有沒有類似的包呢?當(dāng)然有啦!而且也非常好用。下面隆重介紹jso...

    dackel 評論0 收藏0
  • SpringMVC學(xué)習(xí)筆記

    摘要:是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。協(xié)議,是一個(gè)無狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務(wù)器端。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。具體說,就是協(xié)議里面,四個(gè)表示操作方式的動詞。 一、SpringMVC概述 Spring為展現(xiàn)層提供的基于MVC設(shè)計(jì)理念的優(yōu)秀的Web框架,是目前最主流的MVC框架之一 Spring3.0之后全面超越Struts2,成為最優(yōu)秀的MVC框架 S...

    roundstones 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<