有两个String s1;String s2;从s1中查找出s2,并删除。返回删除后的s1;
写一个delString(String s1,String s2)
方法,  不能用API

解决方案 »

  1.   

    不论什么语言,API是库函数, #INCLUDE  IMPORT 这些
      不过我知道C语言容易写一些吧
      

  2.   

    我也想知道怎么做!~不会写代码!~s2是s1的子字符串,s2在s1中不断地匹配,向前自增1
    if (找到)执行delete(s2)
      

  3.   

    不用API?
    String 不是API吗?
      

  4.   

    不能用api,我想指的就是不能用 比如java里面的 indexOf,charAt 之类的东东吧。
      

  5.   

    /**
     * @author mengfanpp
     * 
     */
    public class StringDemo1 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s1 = "I am a student !"; String s2 = "student"; System.out.println(delString(s1, s2)); } private static String delString(String s1, String s2) { String tmp = "";

    for (int i = 0, len1 = s1.length(); i < len1; i++) {
    for (int m = 0, len2 = s2.length(); m < len2; m++, i++) {
    //System.out.println("比较:"+s2.charAt(m)+":"+ s1.charAt(i));
    if (s2.charAt(m) != s1.charAt(i)) {
    tmp += s1.charAt(i);
    //System.out.println(tmp);
    break;
    }
    }
    } return tmp;
    }}
      

  6.   

    public static void main(String[] args) { String s1="abcdefg";
    String s2="bc";
    String s3=s1.replaceAll(s2,"");
    System.out.println(s3);
    }
    输出:adefg
      

  7.   

    虽然有人给出答案了,不过楼主要的可能是mengfanpp(梦凡) 写的,很原始的,呵呵
      

  8.   

    /**
     * @author mengfanpp
     * 
     */
    public class StringDemo1 {/**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s1 = "I am a student !";String s2 = "student";System.out.println(delString(s1, s2));}private static String delString(String s1, String s2) {String tmp = "";for (int i = 0, len1 = s1.length(); i < len1; i++) {
    for (int m = 0, len2 = s2.length(); m < len2; m++, i++) {
    //System.out.println("比较:"+s2.charAt(m)+":"+ s1.charAt(i));
    if (s2.charAt(m) != s1.charAt(i)) {
    tmp += s1.charAt(i);
    //System.out.println(tmp);
    break;
    }
    }
    }return tmp;
    }}这个明显有BUG
    大家用这个试试就知了
    "abcdefgb","bc"
      

  9.   

    private static String getDelString(String str1, String str2)
    {
    int strlen1 = str1.length();
    int strlen2 = str2.length(); 
    String str;
    for(int i=0; i<strlen1-strlen2; i++)
    {
      str = str1.substring(i,i+strlen2);
      if(str.equals(str2))
      {
       str = str1.substring(0,i)+str1.substring  (i+strlen2,strlen1);
       return str;
      }
    }
    return str1;
    }
    用到了String 类中的方法,大家看看算不算用到API?
      

  10.   

    写了个函数,可以很好的做到你要的要求,甚至还如果S1中有N多个S2也能去掉,写的半小时,
    所以算法比较烂,我JAVA比较菜。QQ:124798013  //使用方法
      System.out.println("cjc:"+delString("123aa123a123z123z123z123cc123c123","123"));
      //输出结果
      aaazzzccc
      //封的那个函数,算法挺烂的
      public String delString(String s1,String s2)
      {   
        String  cjc="";
        boolean isSame=true;
        //creat map
        int     bad[]=new int[s1.length()];
        for(int i=0;i<bad.length;i++)
        {
            bad[i]=0;
        }
        //text
        for(int i=0;i<(s1.length()-s2.length())+1;i++)
        {
            System.out.println("i:"+i);
            isSame=true;        for(int j=0;j<s2.length();j++)
            {
                System.out.println("j:"+j);
                if(s1.charAt(i+j)!=s2.charAt(j))
                {
                   isSame=false;
                   break;
                }
            }        if(isSame)
            {
                bad[i]=1;
            }    }
        //生成
        for(int i=0;i<bad.length;i++)
        {
            System.out.println("aa---i:"+i);
            if(bad[i]==0)
            {
               cjc+=s1.charAt(i);
            }
            else
            {
               i+=s2.length()-1;
               System.out.println("++i:"+i);
            }
        }
        
        return cjc;
      }
      

  11.   

    muziyi0208() 写的有点问题啊 如果有多个匹配就不行了 我改了下:
    class Test 
    {
    public static void main(String[] args) 
    {
    String s1 = "中国人国家人中国人民族国";
    String s2 = "国人";
    System.out.println(deleteString(s1,s2));
    } public static String  deleteString(String s1, String s2)
    {
    String str = s1;
    int strlen2 = s2.length();
    int count = 0;
    for(int i = 0; i < str.length() - strlen2; i++)
    {
    String substring = str.substring(i, i + strlen2);
    if(substring.equals(s2))
    {
    count++;
    str = str.substring(0, i) + str.substring(i+strlen2,str.length());
    i = i + strlen2;
    continue;
    }
    }
    System.out.println("匹配了" + count + "次!");
    return str;
    }
    }结果:
    匹配了2次!
    中国家人中民族国
      

  12.   

    public class StringDemo {
    public static void main(String[] args) {

    String s1 = "我叫赵长云,不叫赵子龙"; String s2 = "赵"; System.out.println(delString(s1, s2)); }
    private static String delString(String s1, String s2) {

    String s="";

    for(int i=0;i<s1.length();i++){

    int a=i;

    for(int t=0;t<s2.length();t++){

    if(s1.charAt(a)==s2.charAt(t)){

    if(t==(s2.length()-1))

    i+=s2.length()-1;//比较结束,i向后跳s2.length()-1位继续比较

    a++;

    }else{

    s=s+s1.charAt(i);//记录不符合条件的

    break;//
    }
    }
    }
    return s;
    }
    }
      

  13.   

    用了charAt方法算不算用了API啊...