2017-03-04 307 views
0

首次對Java進行編碼時,請耐心等待:PI試圖在Java中創建一個程序,該程序將打開一個html文件並對其進行編輯,以便刪除所有它的html標籤,但只有他們而不是其他所有東西。我假設文件已經存在,我不需要創建它。 現在我一直在使用一個.txt文件,它裏面有html代碼,爲了讓我開始更快。 到目前爲止,我已經設法編輯該文件,以便它只是刪除html標籤並將其替換爲無。然而,我真正想要的是刪除任何內部的開幕式和右括號。我會告訴什麼,我需要一個例子:替換Java中其他兩個字符之間的字符串中的所有字符

<html> 
<body> 
<p> blah blah blah 
</p> 
</body> 
</html> 

我的計劃已經執行後,txt文件應該只有「等等等等等等」在裏面。 爲了更換標籤,我使用:

if(myString.contains("<html>")) 
     { 
      // do stuff 
     } 

因此,這裏是我的問題:有什麼樣的轉義字符在Java中,讓我說:

if(myString.contains("<") && it is followed by as many characters as the file wants by (">")) 
//then remove everything in between them. 

爲求讓我們假設.txt文件中的html代碼沒有錯誤。如果你想要,我會發布代碼,但它的結構非常糟糕,我認爲它不會幫助你理解我在做什麼。那是因爲我一直在嘗試很多東西,而且我保留了任何我可能覺得有用的評論。感謝您的時間!

+0

可能的[在Java中剝離HTML標記]的副本(http://stackoverflow.com/questions/832620/stripping-html-tags-in-java) – nvisser

回答

1

嘗試使用正則表達式是這樣的。 這裏開始<,並用>結束,以及包含任何沒有這兩個尖括號內的任何性質的任何字符串將被空字符串替換,以便您的代碼將保持喇嘛喇嘛......

str = str.replaceAll("<.*>", ""); 

您可以測試regex here

+0

這正是我所期待的,但是這也取代了等等。我的問題已解決,但感謝您的時間。 :)有一個upvote! *歡呼聲* – linkin2895

+0

我再次檢查並發現它正在吃東西,但我很高興它爲你工作。快樂的編碼。致力於更新代碼。將很快發表評論。 –

+0

'str = str.replace(「<.*>」,「」);'此代碼也可用於替換標籤 –

1

您可以用正則表達式使用String.replaceAll

"<html><p>foo bar</p></html>".replaceAll("</?[A-Za-z]+>", ""); 

結果:

foo bar 

但是,要小心不要試圖用正則表達式來解析HTML。

+0

工程就像一個魅力!非常感謝你。你能解釋一下這個表達究竟意味着什麼嗎?我假設[A-Z a-z]表示任何字母大寫或小寫,但我不瞭解其他許多內容。還有一件事,爲了使這個表達式也替換標籤之間的空格,我需要添加什麼? – linkin2895

+0

這被稱爲'正則表達式'。 (請查看java.util.Pattern類,瞭解它們在Java中的工作方式。)是的,您說的正確的是它包含了所有在'<' and '>'之間的字符,大寫和小寫字母。它也可以選擇包含'/'作爲關閉標籤。 「+」表示「一個或多個」,因此在這種情況下:「一個或多個大寫或小寫字符」。是的,您可以使用'\ s'來表示正則表達式中的空格。 – Jeremy

1

使用JSoup你可以很簡單地地帶一個HTML頁面中的所有標籤:

Jsoup.parse(myString).text()

+0

對不起,我不熟悉這個命令,它可能需要某種庫,我還沒有包括。 – linkin2895

+0

是的,JSoup是一個外部API,但它對於從HTML頁面提取和操作數據非常有用。如果您決定使用它,請在這裏分享鏈接:https://jsoup.org – higz555

相關問題