我正在尝试过滤字符串并仅保留某些短语,试图为代码开发业余语法检查器。例如:
String line = "<html><head><title>HELLO WORLD</title></head><body>Hello WorldMy name is Ricardo i hope you are all doing good</body></html>";
String[] splitt = line.split("\\<html>|\\</html>|\\<head>|\\</head>|\\<title>|\\</title>|\\<body>|\\</body>");
for (String split: splitted) {
System.out.println(split);
}
}
我想获取所有标记,例如<html>
,</html>
,<title>
,</title>
有了代码,我就完全相反了,基本上是过滤掉我想要的东西。
提前谢谢!我整天都在努力解决这个问题。
答案 0 :(得分:2)
如果要在字符串中查找某些短语,则可以使用Java Regex查找所需的输出。只需创建所需字符串的正则表达式并像使用它即可。
Pattern pattern=Pattern.compile("Your Regex");
Matcher matcher=pattern.matcher("Source String");
while (matcher.find()) // true if matches
{
System.out.println(matcher.group()); //prints string token
}
当前您正在使用split(regex),它将通过给定的regex分割字符串,因此它将省略分割符<html>,</html>
等
答案 1 :(得分:0)
尝试以下代码段。
String line = "<html><head><title>HELLO WORLD</title></head><body>Hello WorldMy name is Ricardo i hope you are all doing good</body></html>";
ArrayList<StringBuffer> list = new ArrayList<StringBuffer>();
for(int i=0; i<line.length();i++)
{
if(line.charAt(i)=='<')
{
StringBuffer str = new StringBuffer();
while(line.charAt(i)!='>')
{
str.append(line.charAt(i));
i++;
}
str.append('>');
list.add(str);
}
}
Iterator<StringBuffer> itr = list.iterator();
while(itr.hasNext())
System.out.println(itr.next());
您可以将代码从将字符串放入ArrayList中的代码更改为逻辑。
希望我帮助您编写代码。