2011-11-21 92 views
0
<ul class="uinfo2"><li class="uname2">ruo</li> 
<ul class="uinfo2"><li class="uname"><b>Oinsen</b></li> 

如果文件包含上述HTML行,我想從整個源代碼中替換粗體標記。如何用文本文件中的空格替換標記?

+3

這是不是很清楚你在這裏問什麼。您能否詳細說明您的意思*「我想從整個源代碼中替換粗體代碼」*? (點擊您帖子下方的「編輯」鏈接以更新它以獲取更多信息。) –

回答

1

如果我理解正確,你想從你的HTML中刪除任何<b>標籤?如果是這樣,你可以使用jQuery:

$('b').contents().unwrap(); 

參見:Remove a HTML tag but keep the innerHtml

+0

我可能錯了,但我不確定jQuery的介入嗎? OP將它標記爲[Java](儘管它可能被錯誤地標記)。 –

+0

是的。我想我也是這麼認爲的,但在思考之前,Javascript是OP想要的。 –

+1

不要擔心,但。 [總是有jQuery答案的空間!](http://meta.stackexchange.com/questions/19478/the-many-memes-of-meta/19492#19492) –

0

你可以使用正則表達式,但試圖匹配HTML時,他們很快變得複雜。如果您的文件符合XHTML標準(似乎是這樣),我建議將文件加載爲XML並使用XPath來確定它是否符合您的標準 - 然後根據您的要求使用DOM操作替換粗體代碼。

+0

(這裏假設你正在用Java做這件事,而不是JavaScript - 另一個答案是假設...) – ziesemer

+0

ziesemer - 問題被標記爲原作者的Java,所以我不認爲JavaScript解決方案是必需的。 – laz

1

讀取文件的所有內容並使用replaceAll方法存儲在String(例如String content;)中。
line.replaceAll(「<b>」,「」).replaceAll(「</b >」,「」);
最後在該文件中寫入新的字符串。

File file = new File("input.txt"); 
    BufferedReader reader = new BufferedReader(new FileReader(file)); 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 
    while((line=reader.readLine()) != null) 
     sb.append(line.replaceAll("<b>", " ").replaceAll("</b>", " "));   

    FileWriter writer = new FileWriter(file); 
    writer.write(sb.toString()); 
    writer.flush(); 
    writer.close(); 

這裏是代碼。

+1

這假設他意味着他想要刪除粗體標籤,但不包括附帶的內容 - 示例中的「0insen」。 「不是說這不是他的意思,只是指出問題中的含糊不清。 – Jay

1

使用jsoup可以做到這一點:

import java.io.IOException; 

import nu.xom.ParsingException; 
import nu.xom.ValidityException; 

import org.jsoup.Jsoup; 
import org.jsoup.safety.Whitelist; 
import org.xml.sax.SAXException; 

public class HtmlTest { 
    public static void main(final String[] args) throws SAXException, ValidityException, ParsingException, IOException { 
     String[] tagsToKeep = new String[] {"ul", "li"}; 
     String html = "<ul class=\"uinfo2\"><li class=\"uname2\">ruo</li>\n<ul class=\"uinfo2\"><li class=\"uname\"><b>Oinsen</b></li>"; 
     System.out.println(JSoup.clean(html, Whitelist.none().addTags(tagsToKeep))); 
    } 
} 

初始化tagsToKeep所有你不想刪除,並把它傳遞給addTags的標籤。

+0

不是完全相反嗎? – soulcheck

+0

是的,我剛剛意識到這一點,並解決它:( – laz

+0

@soulcheck - 有固定的。 – laz

相關問題