请问,如何在一个String中寻找与之匹配的String(最好是正则表达式)。如在ABEBDBCABDACBCACABCEABC先分成ABE,BD,BC,ABD,AC,BC,AC,,ABCE,ABC几个String。然后在其中找到AC的组合--AC不一定相连-如ABC也算。统计AC出现的次数。

解决方案 »

  1.   

    ABEBDBC
    ABDAC
    ABEBDBCABDACBCACABCEABC
    算不算??
    你的目的是否可以描述为:含有AC,AC只出现一次,且A在C前?
      

  2.   

    在分开的String中寻找AC,并统计个数,如ABC中含有AC,算一个。
      

  3.   

    首先就不知道你是怎么把原来的一个string分成多个的,后面的问题就不好谈了.
      

  4.   

    你可以看看   api  里面的java.util.*
    public final class Scannerextends Objectimplements Iterator<String>一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。 
      

  5.   

    一旦后项比前项小,就拆分,如:ABEBD,b比e小,拆开成ABE和BD。我基本上实现了,可是用了很复杂的算法,至少也要5重循环,我用了6重。有没有更好的解决方法呢?
      

  6.   

    采用5楼的正则很好。下面给一个可以检测的代码import java.util.regex.*;public class SearchStr {
    private String totalStr;
    private String findStr;
    private int count = 0;
    public SearchStr(String totalStr, String findStr) {
    this.totalStr = totalStr;
    this.findStr = findStr;
    }
    public int countFindStr() {
    Pattern p = Pattern.compile(findStr);
    Matcher m = p.matcher(totalStr);
    while(m.find()) count++;
    return count;
    }
    public static void main(String[] args) {
    SearchStr ss = new SearchStr(args[0], args[1]);
    System.out.println(args[0] + "共找到" + 
    ss.countFindStr() + "个" + args[1]);
    }
    }
      

  7.   

    public int test1(){
    int count = 0;
    String str = "ABEBDBCABDACBCACABCEABC";
    List<String> arrList = new ArrayList<String>();
    for(int i=0;i<str.length()-1;i++){
    char pre = str.charAt(i);
    char next = str.charAt(i+1);
    if(pre>next){
    arrList.add(str.substring(0, i+1));
    str = str.substring(i+1);
    i=0;
    }
    }
    for(int i=0;i<arrList.size();i++){
    Pattern p = Pattern.compile("A.*C");
            Matcher m = p.matcher((String)arrList.get(i));
            if(m.find()){
             count++;
            }
    }
    return count;
    }
      

  8.   

    public int test1(){
    int count = 0;
    String str = "ABEBDBCABDACBCACABCEABC";
    List<String> arrList = new ArrayList<String>();
    for(int i=0;i<str.length()-1;i++){
    char pre = str.charAt(i);
    char next = str.charAt(i+1);
    if(pre>next){
    arrList.add(str.substring(0, i+1));
    str = str.substring(i+1);
    i=0;
    }
    }
    arrList.add(str);
    for(int i=0;i<arrList.size();i++){
    Pattern p = Pattern.compile("A.*C");
            Matcher m = p.matcher((String)arrList.get(i));         
            if(m.find()){
             count++;
            }
    }
    return count;
    }
    漏了最后一个字符串,修改后没有问题了