2017-03-04 303 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

相关问题