如何分割字符串并仅保留某些短语? (JAVA)

时间:2018-09-26 06:01:12

标签: java

我正在尝试过滤字符串并仅保留某些短语,试图为代码开发业余语法检查器。例如:

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> 有了代码,我就完全相反了,基本上是过滤掉我想要的东西。

提前谢谢!我整天都在努力解决这个问题。

2 个答案:

答案 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中的代码更改为逻辑。

希望我帮助您编写代码。