Java 简单实现spilt replace indexOf contains compareTo函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这是课堂作业写的一些代码,可能还有些问题,分享一下,希望大佬们指点指点。

1.实现方法 split, 能够指定分割符将字符串拆分成字符串数组(不必支持正则表达式)

import java.util.Arrays;

public class day02 {
    
    
    public static void main(String[] args) {
    
    
        String s1="helleo";
        String[] s2=s1.split("el");
        String[] s3=MySplit(s1,"el");
        System.out.println(s1);
        System.out.println(Arrays.toString(s2));
        System.out.println(Arrays.toString(s3));
    }
    public static String[] MySplit(String s1,String str){
    
    
        int n=0;
        //最坏的情况是一个没有分出来,就返回string
        //一般情况下都是找到一个写入一个,这里我用的是StringBuffer,方便删除,找到一个删除一个,然后写入一个,这里比较难以理解的就是start的位置
        String[] strings=new String[s1.length()];
        StringBuffer stringBuffer=new StringBuffer(s1);
        for (int i=0;i<strings.length-1;++i) {
    
    
            if (stringBuffer.indexOf(str)>=0) {
    
    
                int start=stringBuffer.indexOf(str);
                stringBuffer.delete(start,str.length()+start);
                strings[i]=stringBuffer.substring(n,start);
                strings[i+1]=stringBuffer.substring(start);
                n=str.length()+start-1;
                continue;
            }
            String[] st1=new String[n];
            for(int j=0;j<st1.length;++j){
    
    
                    st1[j]=strings[j];
            }
            return st1;
        }
        return strings;
    }
}

2.实现方法 replace, 能够替换字符串中的某个部分

public class day02 {
    
    //实现方法 replace
public static void main(String[] args) {
    
    
        String s1="hello";
        String s2=s1.replace("he","Ah");
        System.out.println(s2);
        String s3=Myreplace(s2,"he","Ah");
        System.out.println(s3);
    }
    public static String Myreplace(String s2, String he, String ah) {
    
    //这里用的也是StringBuffer方便删除,插入,最后再变成string
        StringBuffer stringBuffer=new StringBuffer(s2);
        if(stringBuffer.indexOf(he)>=0){
    
    
            int start=stringBuffer.indexOf(he);
            stringBuffer.delete(start,he.length()+1);
            stringBuffer.insert(start,ah);
        }
        String string=stringBuffer.substring(0);
        return string;
    }
}

3.实现方法 indexOf, 能够找出字符串子串存在的位置

public class day02 {
    
    //实现方法 indexOf
public static void main(String[] args) {
    
    
        String s1="hello";
        int n=s1.indexOf("lo");
        System.out.println(n);
        int n1=MyindexOf(s1,"lo");
        System.out.println(n1);
    }
    public static int MyindexOf(String s1, String el) {
    
    
     char[] ch1=s1.toCharArray();
     char[] ch2=el.toCharArray();
     if(ch1.length<ch2.length)//长度大了,直接返回
         return -1;
     for(int i=0;i<ch1.length;++i){
    
    
     //这里用了一个count,依次相加,最后判断
         int count=0;
         for(int j=0;j<ch2.length;++j) {
    
    
             if (ch1[i+count] == ch2[j])
                 count++;
            }
             if(count==ch2.length)
                 return i;
         }
     return -1;
    }
}

4.实现方法 contains, 能够判定字符串中是否包含子串

public class day02 {
    
    
//实现方法 contains, 能够判定字符串中是否包含子串
public static void main(String[] args) {
    
    
        String s1="hello";
        System.out.println(s1.contains("ea"));
        System.out.println(Mycontains(s1,"el"));
        System.out.println(Mycontains(s1,"ea"));
    }

    public static boolean Mycontains(String s1, String el) {
    
    
        if(s1.indexOf(el)>=0)
            return true;
        elsereturn false;
    }
}

5.实现方法 compareTo, 能够实现按照字典序比较字符串大小

public class day02 {
    
    //实现方法 compareTo
public static void main(String[] args) {
    
    
        String s1="hello";
        String s2="helo";
        System.out.println(s1.compareTo(s2));
        System.out.println(MycompareTo(s1,s2));
    }

    public static int MycompareTo(String s1, String s2) {
    
    
        char[] ch1=s1.toCharArray();
        char[] ch2=s2.toCharArray();
        int n=ch1.length>ch2.length?ch1.length:ch2.length;
        for(int i=0;i<n;++i){
    
    
            if(ch1[i]==ch2[i])
                continue;
            if(ch1[i]!=ch2[i])
                return ch1[i]-ch2[i];
        }
        return 0;
    }
}

总结

这些都是简单的实现,肯定有我没有想到的地方,如发现问题,请联系,共同进步。

猜你喜欢

转载自blog.csdn.net/weixin_45070922/article/details/112851402