從一個網站解析HTML代碼,我差不多完成了。我從網站上獲得了我需要的文本部分,但偶爾會有一些鏈接包含在我希望擺脫的HTMl中。我正在考慮使用這樣的事實:我不想要的所有元素都以'<'開頭,當然還有'>'開頭。無論如何要做到這一點?這是我迄今爲止所擁有的。從字符串中刪除段
for(int i = 0; i<desc.length();i++)
{
if(desc.charAt(i)==('<')){
}
}
desc是我想修剪的字符串。
從一個網站解析HTML代碼,我差不多完成了。我從網站上獲得了我需要的文本部分,但偶爾會有一些鏈接包含在我希望擺脫的HTMl中。我正在考慮使用這樣的事實:我不想要的所有元素都以'<'開頭,當然還有'>'開頭。無論如何要做到這一點?這是我迄今爲止所擁有的。從字符串中刪除段
for(int i = 0; i<desc.length();i++)
{
if(desc.charAt(i)==('<')){
}
}
desc是我想修剪的字符串。
手動解析標記語言(如XML和HTML)通常被認爲是一個壞主意。但是,如果您只是試圖刪除所有元素,則可以看到簡單腳本可能有用的位置。
我認爲值得一提的是,如果您刪除HTML的所有元素,則可能會有多個文本卡在一起。看看這段代碼,看看它是否有幫助。
public class RemoveHtmlElements {
public static void main(String[] args) {
String html = "<!DOCTYPE html><html><body><h1>My First Heading</h1>"
+ "<p>My first paragraph.</p></body></html>";
boolean elementsExist = true;
while(elementsExist) {
if(html.contains("<")) {
int open = html.indexOf("<");
int closed = html.indexOf(">", open);
html = html.substring(0, open) + " " + html.substring(closed + 1);
} else {
elementsExist = false;
}
}
System.out.println(html);
}
}
這應該清除任何括號元素的HTML。它將輸入一個空格,在該空格處刪除一個元素以防止文本被意外卡住。
我會嘗試這樣的事情;
StringBuilder sb = new StringBuilder();
boolean open = false;
for (char c : desc.toCharArray()) { // iterate over the characters
if (c == '<') { // if we hit a less then store that the tag is open.
open = true;
} else if (open && c == '>') { // if the tag is open and the close symbol hits close.
open = false;
} else if (!open) { // if the tag isn't open
sb.append(c);
}
}
System.out.println(sb.toString()); // print the string.