当前位置:编程学习 > JAVA >>

求 JAVA 字符串匹配 完美算法

在orgStr中搜寻subStr所在的位置的下标数组
如:在orgStr[ALSKLSHF KDLLS]中搜寻subStr[LS],返回{1,4,11}
追问:能实现这个目的,谢谢了。

那么,问题继续:上面是将字符串匹配取出标志位,下面一个问题将用到标志位。

场景:原始字符串为:LKSJDI(LKJSD)LSIDJ(KIKS)LSK(LKDL)LKDSJ,现在我仅知道里面有括号并且知道括号内有一已知字符串KJS,括号的对数不清楚,我怎么去根据KJS去取出LKJSD(即括号内的内容)并且将其内容替换为另一个字符串NEWSTRING,即替换后的字符串为:LKSJDI(NEWSTRING)LSIDJ(KIKS)LSK(LKDL)LKDSJ

答案:只需要实例化 类Matching  设置参数 并调用m.getIndex()方法就OK    请测试...

 

public class Test18{
 
 public static void main(String[] args){
  Matching m = new Matching();
  m.setOrgStr("ALSKLSHFKDLLS");
  m.setSubStr("LS");
  System.out.println(m.getIndex());
  
 }
}
class Matching{
 
 String orgStr ="";
 String subStr ="";
 
 public void setOrgStr(String orgStr){
  this.orgStr = orgStr;
 }
 
 public void setSubStr(String subStr){
  this.subStr = subStr;
 }
  
 public String getIndex(){
  
  StringBuffer sb = new StringBuffer("{");
  
  //根据关键字subStr来拆分字符串orgStr所得的字符串数组
  String[] sub = orgStr.split(subStr);   
  
  int keyLength = subStr.length();    //关键字长度
  int keySize = 0;    //关键字个数
  
  int subSize = sub.length;    //子字符串个数
  int subLength = 0;    //子字符串长度
    
  if(!orgStr.endsWith(subStr)){
   keySize = subSize-1;
  }else
   keySize = subSize;

  int[] index = new int[keySize];//关键字下标数组
  for(int i=0;i<keySize;i++){
   subLength = sub[i].length();
   if(i==0){
    index[i]=subLength; 
   }else
    index[i]=index[i-1]+subLength+keyLength;   
  }
  
  if(keySize>0){
   int l = keySize-1;
   for(int i=0;i<l;i++){
    sb.append(index[i]+",");
   }
   sb.append(index[l]);//最后一个关键字下标
  }else{
   sb.append("NULL"); 
  }
  sb.append("}");
  
  return  sb.toString();
 }
 
}

上一个:php 和 java 的不同之处
下一个:JAVA课程设计 彩票号码产生器

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,