2014-11-13 3 views
0

У меня есть строка с содержимым:Заменить строку из определенного полукокса к определенному полукокса

<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> с другой строкой.

resut Шоуда быть что-то вроде: ... <td id="sub_referat1">Max Musterman</td> ...

мне нужна помощь, пожалуйста,

+1

... и ваш код до сих пор? – Smutje

+0

ну, я застрял на замене ("sub_referat1>", "> Max Mustermann"). Что-то, о чем я забыл упомянуть, («module/asd») загружается диамантически, это означает, что я не могу заменить через indexOf. – leostiw

ответ

1

Вы можете использовать регулярное выражение, чтобы сделать это:

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

$1 является содержание первой группы захвата, $2 - это содержимое второй группы захвата.

.*? соответствует любому, но не жадному (останавливается при первом </td>).

+0

Ты должен быть самым крутым человеком в живых. Благодаря! – leostiw

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); 
Смежные вопросы