将字符串从某些char替换为某些char

时间:2014-11-13 15:02:02

标签: java string replace

我有一个包含以下内容的字符串:

<table border="0" cellpadding="0" cellspacing="0" style="width:280px">
<tbody>
    <tr>
        <td><img src="/corr/subscription/subscription_1" /></td>
        <td><img src="/corr/subscription/subscription_2" /></td>
    </tr>
    <tr>
        <td id="sub_referat1">#parse ("module/asd")</td>
        <td id="sub_referat2"> </td>
    </tr>
</tbody>

我需要将<td id="sub_referat1"> ...与</td>之间的内容替换为另一个字符串。

重新开始应该是:... <td id="sub_referat1">Max Musterman</td> ...

我需要帮助

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式执行此操作:

content = content.replaceAll("(<td id=\"sub_referat1\">).*?(</td>)", "$1Max Mustermann$2");

$1是第一个捕获组的内容,$2是第二个捕获组的内容。

.*?匹配任何内容,但不贪婪(停在第一个</td>)。

答案 1 :(得分:0)

如果您想在替换之前解析匹配,可以执行以下操作:convert(String)获取匹配并对其进行转换。

Pattern pattern = Pattern.compile("(<td\\s+id=\"sub_referat1\">)([^<]*)");
Matcher matcher = pattern.matcher(content);
StringBuffer buffer = new StringBuffer();
while(matcher.find()) {            
    matcher.appendReplacement(buffer, matcher.group(1));
    buffer.append(convert(matcher.group(2)));
}        
matcher.appendTail(buffer);