如何使用^找到文本的开始和结束,并使用jsoup替换它

时间:2017-02-28 13:10:26

标签: java jsoup

我有一个HTML。 HTML的内容如下所示

<html>
    <head>
        <style>
            .....
        </style>
    </head>
    <body>
        ....
        <p class=TableaParagraph>
            <span style="color: #000000; font-size: 10pt; font-family: Calibri">
                ^BUYER-NAME-FIRST^Buyer Last Name:
            </span>
        </p>
        <p class=TableaParagraph>
            <span style="color: #000000; font-size: 10pt; font-family: Calibri">
                ^COBUYER-NAME-LAST COBUYER-NUMBER="1"^Current Address:
            </span>
        </p>
        ....
        <span style="color: #000000; font-size: 9pt; font-family: Calibri">
            Total Earnest Deposits paid upon signing this agreement^TOTAL-EARNEST-DEPOSIT-AMOUNT^
        </span>
        .....
    </body>
</html>

HTML会出现一些以^开头并以^结尾的自定义标记,例如^COBUYER-NAME-FIRST COBUYER-NUMBER="1"^这些标记可以出现在html中的任何位置。我想查找以^开头和结尾的每个标记,并将其替换为值。

问题在于jquery选择器^用于start,而$用于end。但是这里我的标签还包含^。那么如何找到标签并将其替换为值。与代替^BUYER-NAME-FIRST^一样,我想将其替换为Basit

一旦我将获得所有标签,那么我将不得不循环它以替换该值。但是如何以有效的方式获取此HTML中的所有标记。

这是我到目前为止的代码:

String html = rtfService.convertRTFToHtml(rtfFile);
Document doc = Jsoup.parse(html);
Elements links = doc.select("span[href]");

1 个答案:

答案 0 :(得分:1)

你所拥有的不是标签,它们只是元素中的文字。

jSoup支持:contains伪选择器,在你的情况下更有用的是:containsOwn伪选择器; details。因此,您可以找到包含^的元素:

Elements matches = doc.select("*:containsOwn(^)");

...然后在元素的文本节点上使用正则表达式(可能)或类似的循环来查找匹配的^...^标记,并用适当的值替换它们。