在java中搜索模式

在java中搜索模式,java,Java,是的,伙计们,这是一种家庭作业……但我们将感谢你们的帮助 对不起,前面的问题不完整。我是新来的,所以请不要介意 我有一个字符串,例如,“how aare you a re you a you a re you a re you a r e you ar e”,我要比较的字符串是“are” 现在的问题是找到“are”的出现方式,如果它显示为“aare”,则会被忽略,因为它变成了一个完全不同的词;如果它显示为“you a re”,则会被接受,因为“you”将被视为一种不同的模式,“a re”将被视为

是的,伙计们,这是一种家庭作业……但我们将感谢你们的帮助

对不起,前面的问题不完整。我是新来的,所以请不要介意

我有一个字符串,例如,“how aare you a re you a you a re you a re you a r e you ar e”,我要比较的字符串是“are”

现在的问题是找到“are”的出现方式,如果它显示为“aare”,则会被忽略,因为它变成了一个完全不同的词;如果它显示为“you a re”,则会被接受,因为“you”将被视为一种不同的模式,“a re”将被视为另一种模式,如果它显示为“u a r e”它被拒绝,因为它形成了一种“特定的模式,如空格词空格词。。。因此,u也将成为“are”的一部分,因此它应该被拒绝,如果它显示为“you ar e”,则它被接受,“you a r e”也被接受

  • “aare”被忽略了
  • “你是”它被接受了
  • “u a r e”被拒绝
  • “你是”这是可以接受的
  • “you a r e”也被接受
我尝试了以下代码:

public class testPattern1 {

    public static void main(String args[])
    {
        String a="How aare yoar u a r e yo ar e";
        String compare="are";


        int i,temp=0;
        for(i=0;i<a.length();i++)
        {
            if (a.charAt(i)==compare.charAt(0))
            {
                temp=i;
                temp++;

                for(int d=temp;d<a.length();)
                {
                    while(a.charAt(temp)==' ')
                    {
                        temp++;
                    }

                    if(a.charAt(temp)==compare.charAt(1))
                    {
                        temp++;
                    }
                    else
                    {
                        break;
                    }
                    while(a.charAt(temp)==' ')
                    {
                        temp++;
                    }
                    if(a.charAt(temp)==compare.charAt(2))
                    {
                        System.out.println("matched at"+temp);
                    }
                    else
                    {
                        System.out.println("not matched at"+temp);
                    }

                }

            }


        }

    }

}
公共类testPattern1{
公共静态void main(字符串参数[])
{
String a=“How aare yoar u a r e yoar e”;
字符串compare=“are”;
int i,温度=0;

对于(i=0;i检查这是否适合您

public static void main(String args[])
{
String line = "how aare you a re yo u a r e you ar e you a r e";

String [] occurence ={" are","a re","ar e","you a r e"};
int total = 0;
for(String occ:occurence){
     int size = (line.split(occ)).length;
     if(line.contains(occ) && !line.startsWith(occ) &&  !line.endsWith(occ)){
         size = size-1;  
     }else if(!line.contains(occ)){
         size = 0; 
     }
        System.out.println(occ+" "+ (size));
        total=total+size ;

}

System.out.println("Total Ocuurence "+total);


}

谢谢你的帮助,但是上面的代码不能满足我的要求。因为如果我试图在下面的字符串中找到'are':“how aare you”。它找到了。但是它不应该找到'are',因为两者(aare&are)都是不同的词。你能为'are'发布一个可接受和不可接受的模式列表吗,这将有助于弄清楚到底应该做什么。@smit:当然可以。。模式如下:1.如果“are”出现在“aare”或任何其他单词,如“hare”或“barel”中,即如果它与其他字母组合,则不算数。2.如果它出现在“TheDoctor's a r e there”中,则也不算数,因为“as a r e”是w洞形成了一种特定的模式,如果它像“那里的医生”,那么它就会被接受。3.如果它看起来像“你好,你好”,那么它就会被接受。4.“你好”也会被接受。我必须说你有非常古怪的“是”模式。但是它是可以实现的。你最好的选择是遵循@null代码(答案2)。为“are”创建所有可接受的匹配项的数组。按字符读取每一行,并将所有匹配项与字符串进行比较。您必须添加一些逻辑破解来实现一些字符串模式。如果您有任何问题,请告诉我们。祝您好运
public static void main(String args[])
{
String line = "how aare you a re yo u a r e you ar e you a r e";

String [] occurence ={" are","a re","ar e","you a r e"};
int total = 0;
for(String occ:occurence){
     int size = (line.split(occ)).length;
     if(line.contains(occ) && !line.startsWith(occ) &&  !line.endsWith(occ)){
         size = size-1;  
     }else if(!line.contains(occ)){
         size = 0; 
     }
        System.out.println(occ+" "+ (size));
        total=total+size ;

}

System.out.println("Total Ocuurence "+total);


}