package basic;
public class MyString {
//创建一个调用打印的方法
public static void pri(Object obj){
System.out.println(obj);
}
//例1、去除字符串空格
public static String myTrim(String str)
{ //初始化指针
int begin=0,end=str.length()-1;
//判断字符串前后是否为空
while(begin<end && str.charAt(begin)==' ')
begin++;
while(begin<end && str.charAt(end)==' ')
end--;
//获取非空子串
return str.substring(begin,end+1);
}
//例2、打印反转字符串
public static String reverseString(String str,int begin,int end){
char[] chs=str.toCharArray();//将字符串转成数组
reverse(chs,begin,end);//调用数组反转的方法
return new String(chs);//生成新的字符串
}
public static String reverseString(String str){//重载上面的方法
return reverseString(str,0,str.length());//反转所有字符串
}
private static void reverse(char[] arr,int x,int y){
for(int begin=x,end=y-1;begin<end;begin++,end--){
exchang(arr,begin,end);//调用转换的方法
}
}
private static void exchang(char[] arr,int x,int y){//实现位置转换
char temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
//例3、查找一个字符串出现在另一个字符串的次数
public static int getCount(String str,String key){//str为要比较的,key为用来比较的字符串
int count=0;
int index=0;
while((index=str.indexOf(key))!=-1){//当下标不为空时
str=str.substring(index+key.length());//从上一次被取得下一位开始截取子串
count++;
}
return count;
}
//例4、返回两个字符串中最大的相同字符串
public static String getMaxSubString(String str1,String str2)
{
String max = "",min = "";//比较两个字符串的大小
max = (str1.length()>str2.length())?str1: str2;//找出最大的字符串
min = (max==str1)?str2: str1;//找出最小的字符串
for(int i=0; i<min.length(); i++)
{//每循环一次min就少1,i次就减去i
for(int j=0,k=min.length()-i; k!=min.length()+1; j++,k++)
{//生成一个临时数组
String temp = min.substring(j,k);
if(max.contains(temp))//是否最大数组中包含这个临时数组
return temp;
}
}
return "null";
}
public static void main(String[] args)
{
String s=" I like java ,java is so beatiful ";
String s1="avaasdasw";
pri("("+s+")");//打印原字符串
s=myTrim(s); //调用去除空格的方法
pri("("+s+")");//打印截取后的新字符串
pri("("+reverseString(s)+")");//打印反转新字符串
pri("count="+getCount(s,"av"));//输出一个字符串出现在另一个字符串的次数
pri(getMaxSubString(s,s1));//输出两个字符串中最大的相同字符串
}
}
结果展示: