2013-05-15 28 views
-1

我獨自一人有一個XML之外,我想添加一個名爲scl添加標記現有標籤的正則表達式

因此,例如標籤

<documents> 
<rnl></rnl> 
<snl></snl> 
<scl>This is scl</scl> 
</documents> 

所以<scl>This is scl</scl>將化身以外的標記<credit><scl>This is scl</scl></credit> 如何修改以下內容以實現此目的?到目前爲止,我嘗試過。

String content5 = "<scl>this is scl</scl>"; 
System.out.println(content5.replaceAll("^(?:&lt;scl&gt;)(?:.*?)(?:&lt;/scl&gt;)", "<credit>$1</credit>")); 
+1

你不能在你的情況下使用xml解析器嗎? – bsiamionau

+0

@zvzdhk這將是明智的方法來完成這項任務。 –

+0

爲什麼不使用xml解析器.. – Anirudha

回答

0

在這裏你去:

String content5 = 
    "<scl>this is scl</scl>\n" + 
    "<blah>this isn't</blah>\n" + 
    "<scl>this is scl</scl>\n" + 
    "<blah>this isn't</blah>\n"; 
System.out.println(content5.replaceAll("(?:<scl>)(?:.*?)(?:</scl>)", "<credit>$0</credit>")); 

輸出:

<credit><scl>this is scl</scl></credit> 
<blah>this isn't</blah> 
<credit><scl>this is scl</scl></credit> 
<blah>this isn't</blah> 
+0

它不會爲其他人工作:String content5 =「這是scl」 –

+1

謝謝,修復它。 – maybeWeCouldStealAVan

1

一個辦法是做這樣的:

String content5 = "<scl>this is scl</scl>"; 
System.out.println(content5.replace("<scl>", "<credit><scl>").replace("</scl>", "</scl></credit>")); 
+1

你是對的 - 正則表達式對於這個簡單的情況是過度的。 – maybeWeCouldStealAVan

0

試試這個

StringBuilder sb = new StringBuilder(content5); 

    sb.insert(sb.indexOf("<scl>"), "<credit>"); 
    sb.insert(sb.indexOf("</scl>") + "</scl>".length(), "</credit>"); 

    String result = sb.toString(); 
0

您可以完全改變你思考問題的方式和使用正確的庫來處理XML Dom4j。非常容易學習,非常簡單和直接使用。你需要的一切都在這個鏈接中解釋。