提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
这是课堂作业写的一些代码,可能还有些问题,分享一下,希望大佬们指点指点。
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;
}
}
总结
这些都是简单的实现,肯定有我没有想到的地方,如发现问题,请联系,共同进步。