2014-04-18 39 views
0

所以我想從一個文件替換所有"我的Java代碼正在閱讀什麼都沒有,所以「所有」被刪除,我可以寫我想要的信息。例如,該文件包含:如何用「」替換「」「」

<span class="positive">This is the text i want</span> 

如何刪除"postive"

這是我的代碼:

public static void writeTXT(String j) throws IOException { 

    j = j.replaceAll(">", ""); 
    j = j.replaceAll("<", ""); 
    for (int i = 0;i < REPLACE.length;i++) { 
     j = j.replace(REPLACE[i], ""); 
    } 


public final static String[] REPLACE = { 
    "onth Change <span class=\"stay\">", 
    "/span/li" 
}; 
+3

這真的不清楚你問什麼之間,但*似乎*就像你試圖從HTML中解析和提取東西,你應該使用XML解析器。 –

+0

您可能有興趣查看JSoup ...這是一個非常容易使用的HTML Java解析器。 http://jsoup.org/ – SnakeDoc

+0

他只是想刪除''「'' –

回答

0

什麼是你想要做的是用正則表達式解析HTML。只有Chuck Norris可以用正則表達式解析HTML。

如果你想得到這個子字符串,你需要編寫自己的解析器,它可以逐字符地分析字符串,或者使用現有的解析器來解析HTML。

+1

或者,對於像JSoup這樣的Java,使用一個已經構建並且非常好的HTML解析器。不要重新發明輪子,你會做錯的。 – SnakeDoc

+0

雖然我同意你的陳述,但只有Chuck Norris才能正確解析HTML,問題仍然有效,人們經常使用正則表達式從HTML中提取數據,而不是完全解析它。 –

+0

@JuanMendes財產的唯一方法是做到這一點,並確保它總是準確的,它使用JSoup。使用正則表達式會導致錯誤。如果OP正在編寫代碼來解析只有一個永遠不會改變的特定html頁面,那麼一定要寫一個正則表達式。否則,使用解析器和幾個命令,如; '元素positiveClass = doc.select(「span.positive」)。first();'他可以在路上。 – SnakeDoc

0

雖然這是事實,你應該使用XML解析器中提取文本出來的HTML,下面的代碼將刪除所有雙引號

String html = "<span class=\"positive\">This is the text i want</span>"; 
    System.out.println(html.replaceAll("\"[^\"]*\"", "\"\"")); 
    // <span class="">This is the text i want</span>