Java或C#中的字符串匹配

时间:2016-03-15 13:08:28

标签: java c#

分配给我的任务是从String中找到给定模式的所有可能组合。像给定的字符串是01001001001001。 我必须找到01001在给定字符串中出现的次数?所以我需要的正确答案是给定字符串中存在4种可能的01001组合。我怎样才能在java或C#中编写代码?我试过这个,但结果只有两个字符串匹配。

    package regularexpressions;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.*;
import java.util.Scanner;


public class RegularExpressions {


 public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("Enter the main string: ");

        String main = sc.nextLine();

        System.out.println("Enter the pattern string: ");

        String patern = sc.nextLine();

       Pattern p = Pattern.compile(patern);
       // get a matcher object

       Matcher m = p.matcher(main); 

   System.out.println("The input String is="+input);

       System.out.println("The Pattren to be recgnoized is="+pattren);

       while(m.find()) {

           count++;
           System.out.println("Match number "
                              + count);
           System.out.println("start(): "
                              + m.start());
           System.out.println("end(): "
                              + m.end());                  

}

}

1 个答案:

答案 0 :(得分:0)

这是您想要复制并粘贴到java公共类中并尝试

String givenString = "01001001001001";

    String pattern = "01001";
    int j = 0,count = 0;
    int matchChar = 0;
    int temp = 0;

    for(int i = 0; i < (givenString.length() - pattern.length() + 1); i++)
    {

        if(givenString.charAt(i) == pattern.charAt(j))
        {
            temp = i;
            while(givenString.charAt(temp) == pattern.charAt(j) && j < pattern.length() - 1)
                {
                    matchChar++;
                    temp++;
                    j++;
                }
            j = 0;
        }
        j = 0;
        if(matchChar == 4)
                count += 1;
        matchChar = 0;
    }
    System.out.println(count);