黑马程序员技术交流社区

标题: 获取字符串中的子字符串的通用通用方法 [打印本页]

作者: 程宏志    时间: 2012-7-21 18:38
标题: 获取字符串中的子字符串的通用通用方法
听毕老师讲课时突然想到:怎么去获取字符串中的子字符串的方法?
class Test_1
{
    String str="cbaabkcdak123bakkd";
    int w=-1,q=-1,p=-1;
    public void show(char b,char a,char k)//引入参数为了扩展该程序的实用性!
     {
       if (str.contains("bak"))//随着参数的变化而变化
     {
   
       int i=0,j=0, c=0;
       int x=0,y=0, v=0;

       //将w所得到索引值放到一个数组m。
      for(;x<str.lastIndexOf('b');x++)
     {   
       w=str.indexOf('b',w+1);
       if(w==-1)
       {
         break;
       }
     }
       //System.out.print("执行的次数"+x);
       System.out.println();
     int[] m=new int[x];
     for(;i<str.lastIndexOf('b');i++)
     {   
       w=str.indexOf('b',w+1);
       if(w==-1)
       {
        break;
       }
      
        // System.out.print(w+" ");
        m=w;
      // System.out.println("数组的值"+"m["+i+"]="+m);
      
     }
     System.out.println();
     //将获取a的索引值放到数组n中

     for (;y<str.lastIndexOf('a') ;y++ )
     {
      q=str.indexOf('a',q+1);
      if (q==-1)
      {
       break;
      }
     }
     //System.out.println("循环次数为"+y);

     int[] n=new int[y];
     for(;j<str.lastIndexOf('a');j++)
     {
       q=str.indexOf('a',q+1);
       if(q==-1)
       {
        break;
       }
       n[j]=q;
       //System.out.print(q+" ");
       //System.out.println("数组的值"+"n["+j+"]="+n[j]);
     }
     
     System.out.println();

     //将获得k的索引值放到数组h中
     for (;v<str.lastIndexOf('k') ;v++ )
     {
      p=str.indexOf('k',p+1);
      if (p==-1)
      {
       break;
      }
     }
     //System.out.println("执行次数"+v);
     int[] h=new int[v];
     for(;c<str.lastIndexOf('k');c++)
     {
       p=str.indexOf('k',p+1);
       if(p==-1)
       {
        break;
       }
      h[c]=p;
      // System.out.print(p+" ");
      // System.out.println("数组的值"+"h["+c+"]="+h[c]);
     }
     //通过算法获得可能的的值,再通过使用substring方法获得子字符串!
     for (int e=0;e<m.length ;e++ )
     {
      for (int d=0;d<n.length ;d++ )
      {
       for (int f=0;f<h.length ;f++ )
       {
        if (n[d]-m[e]==1&&h[f]-n[d]==1&&h[f]-m[e]==2)
         {
          System.out.println("可能性是"+" "+m[e]+" "+n[d]+" "+h[f]);
          System.out.println(str.substring(m[e],h[f]+1));
         
         }
         
       }
      }
    }
          }
    else
      System.out.println("-1");
}
}

class Demo
{
public static void main(String[] args)
{
  Test_1 t=new Test_1();
  t.show('b','a','k');
}
}
这是我写的一种,还有一种思路就是通过获得‘a’的索引值建立数组如a[],然后通过a-1的int值,去使用charAt与'b'作等比较和a+1的值
通过使用charAt与‘k'作等比较,来获取子字符串bak。
不知道大家有没有什么好的方法,也帮我看看,将我上面的程序优化一下!






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2