java String类常用方法练习小结

网友投稿 231 2023-06-13


java String类常用方法练习小结

String 类代表字符串。java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。

String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、

创建字符串副本并将所有字符全部转换为大写或小写。

String类是最常用的类之一,下面就通过几个练习,熟悉String类中的提供的重要方法。

字符串练习一

给定一个字符串数组,按照字典顺序,进行大小写排序

思路:

1.对数组排序,可以用选择排序、冒泡排序等等。

2.for循环嵌套,比较,交换位置。

3.不同之处,以前比较的是数字,用的是比较运算符;

现在比较的是字符串对象,应该使用compareTo方法。

public class StringTest_1

{

//对字符串数组进行排序

public static void stringSort(String[] arr)

{

//采用冒泡排序

for(int i=0;i

{

for(int j=0;j

{

//用compareTo方法进行字符串比较

if(arr[j].compareTo(arr[j+1])>0)

{

String temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

showArray(arr);

}

//定义方法,以[str1,str2,str3]的格式来打印数组

public static void showArray(String[] arr)

{

System.out.print("[");

for(int i=0;i

{

if(i!=arr.length-1)

System.out.print(arr[i]+",");

else

{

System.out.print(arr[i]+"]\n");

}

}

}

public static void main(String[] args)

{

String arr[]={"nba","abc","cba","zz","qq","haha"};

//打印数组

showArray(arr);

//对数组进行排序并输出

stringSort(arr);

}

}

运行:

字符串练习二

一个子串在字符串中出现的次数

思路:

1.用indexOf方法获取子串在字符串中第一次出现的位置index

2.再用indexOf方法获取以(index+子串长度)为起始的剩下的字符串中子串出现的位置,直到字符串中不再包含子串。可用while循环实现。

3.每次找到后用计数器记录即可。

public class StringTest_2

{

public static void main(String[] args)

{

String str="abcqwabcedcxabcuabcjkabcnmbabc";

//String str=null;

try

{

int count=countChildStr(str,"abc");

System.out.println("abc在"+str+"中出现的次数为:"+count);

}

catch (NullPointerException ne)

{

Systhttp://em.out.println(ne);

}

catch(RuntimeException re)

{

System.out.println(re);

}

}

public static int countChildStr(String str,String key)

{

if(str==null||key==null)

{

throw new NullPointerException("空指针异常,源字符串和子串都不能为NULL");

}

if(key=="")

{throw new RuntimeException("调用不合法,子串要有内容");}

int count=0,index=0;

while((index=str.indexOf(key,index))!=-1)

{

count++;

index+=key.length();

}

return count;

}

}

字符串练习三

找到两个字符串的最大公共子串

思路:

1.判断较长字符串中是否包含较短字符串,如果包含,则较短字符串则为最大公共子串。

2.如果不包含,就对较短字符串以长度递减的方式取子串,去较长字符串中判断是否包含,如果包含就找到了,不用再找了。

3.重点:对字符串以长度递减的方式取子串

public class StringTest_3

{

public static void main(String[] args)

{

//创建两个不为空的字符串

String str1="abxczwsxcvdfas";

//String str1=null;

String str2="ghwsxcvxcdbgthnnnrfqwe";

try

{

String str=searchMaxCommonStr(str1,str2);

System.out.println("最大公共子串是:"+str);

}

catch (NullPointerException ne)

{

System.out.println(ne);

}

}

public static String searchMaxCommonStr(String str1,String str2)

{

if(str1==null||str2==null)

throw new NullPointerException("空指针异常,参数不能为Null");

//断定较长字符串和较短字符串

String max=(str1.length()>str2.length())?str1:str2;

String min=(str1.equals(max))?str2:str1;

//按长度递减的方式取子串,从min.length~~1

for(int i=min.length();i>0;i--)

{

for(int x=0,y=x+i;y

{

String childStr=min.substring(x,y);

//若较长字符串中包含此子串,则找到了

//否则继续找

if(max.contains(childStr))

return childStr;

}

}

return null;

}

}

运行:

字符串练习四

写一个和trim功能相同的方法

思路:

1.定义两个变量,用来存储两个角标

2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符

3.截取字符串

public class StringTest_4

{

public static void main(String[] args)

{

String str=" abc ws ";

str=myTrim(str);

System.out.println(str);

}

public static String myTrim(String s)

{

int begin=0,end=s.length()-1;

//从头遍历

while(begin<=end && s.charAt(begin)==' ')

{

begin++;

}

//从尾部遍历

while(begin<=end && s.charAt(end)==' ')

{

end--;

}

return s.substring(begin,end+1);

}

}

运行:

{

for(int j=0;j

{

//用compareTo方法进行字符串比较

if(arr[j].compareTo(arr[j+1])>0)

{

String temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

showArray(arr);

}

//定义方法,以[str1,str2,str3]的格式来打印数组

public static void showArray(String[] arr)

{

System.out.print("[");

for(int i=0;i

{

if(i!=arr.length-1)

System.out.print(arr[i]+",");

else

{

System.out.print(arr[i]+"]\n");

}

}

}

public static void main(String[] args)

{

String arr[]={"nba","abc","cba","zz","qq","haha"};

//打印数组

showArray(arr);

//对数组进行排序并输出

stringSort(arr);

}

}

运行:

字符串练习二

一个子串在字符串中出现的次数

思路:

1.用indexOf方法获取子串在字符串中第一次出现的位置index

2.再用indexOf方法获取以(index+子串长度)为起始的剩下的字符串中子串出现的位置,直到字符串中不再包含子串。可用while循环实现。

3.每次找到后用计数器记录即可。

public class StringTest_2

{

public static void main(String[] args)

{

String str="abcqwabcedcxabcuabcjkabcnmbabc";

//String str=null;

try

{

int count=countChildStr(str,"abc");

System.out.println("abc在"+str+"中出现的次数为:"+count);

}

catch (NullPointerException ne)

{

Systhttp://em.out.println(ne);

}

catch(RuntimeException re)

{

System.out.println(re);

}

}

public static int countChildStr(String str,String key)

{

if(str==null||key==null)

{

throw new NullPointerException("空指针异常,源字符串和子串都不能为NULL");

}

if(key=="")

{throw new RuntimeException("调用不合法,子串要有内容");}

int count=0,index=0;

while((index=str.indexOf(key,index))!=-1)

{

count++;

index+=key.length();

}

return count;

}

}

字符串练习三

找到两个字符串的最大公共子串

思路:

1.判断较长字符串中是否包含较短字符串,如果包含,则较短字符串则为最大公共子串。

2.如果不包含,就对较短字符串以长度递减的方式取子串,去较长字符串中判断是否包含,如果包含就找到了,不用再找了。

3.重点:对字符串以长度递减的方式取子串

public class StringTest_3

{

public static void main(String[] args)

{

//创建两个不为空的字符串

String str1="abxczwsxcvdfas";

//String str1=null;

String str2="ghwsxcvxcdbgthnnnrfqwe";

try

{

String str=searchMaxCommonStr(str1,str2);

System.out.println("最大公共子串是:"+str);

}

catch (NullPointerException ne)

{

System.out.println(ne);

}

}

public static String searchMaxCommonStr(String str1,String str2)

{

if(str1==null||str2==null)

throw new NullPointerException("空指针异常,参数不能为Null");

//断定较长字符串和较短字符串

String max=(str1.length()>str2.length())?str1:str2;

String min=(str1.equals(max))?str2:str1;

//按长度递减的方式取子串,从min.length~~1

for(int i=min.length();i>0;i--)

{

for(int x=0,y=x+i;y

{

String childStr=min.substring(x,y);

//若较长字符串中包含此子串,则找到了

//否则继续找

if(max.contains(childStr))

return childStr;

}

}

return null;

}

}

运行:

字符串练习四

写一个和trim功能相同的方法

思路:

1.定义两个变量,用来存储两个角标

2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符

3.截取字符串

public class StringTest_4

{

public static void main(String[] args)

{

String str=" abc ws ";

str=myTrim(str);

System.out.println(str);

}

public static String myTrim(String s)

{

int begin=0,end=s.length()-1;

//从头遍历

while(begin<=end && s.charAt(begin)==' ')

{

begin++;

}

//从尾部遍历

while(begin<=end && s.charAt(end)==' ')

{

end--;

}

return s.substring(begin,end+1);

}

}

运行:

{

//用compareTo方法进行字符串比较

if(arr[j].compareTo(arr[j+1])>0)

{

String temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

showArray(arr);

}

//定义方法,以[str1,str2,str3]的格式来打印数组

public static void showArray(String[] arr)

{

System.out.print("[");

for(int i=0;i

{

if(i!=arr.length-1)

System.out.print(arr[i]+",");

else

{

System.out.print(arr[i]+"]\n");

}

}

}

public static void main(String[] args)

{

String arr[]={"nba","abc","cba","zz","qq","haha"};

//打印数组

showArray(arr);

//对数组进行排序并输出

stringSort(arr);

}

}

运行:

字符串练习二

一个子串在字符串中出现的次数

思路:

1.用indexOf方法获取子串在字符串中第一次出现的位置index

2.再用indexOf方法获取以(index+子串长度)为起始的剩下的字符串中子串出现的位置,直到字符串中不再包含子串。可用while循环实现。

3.每次找到后用计数器记录即可。

public class StringTest_2

{

public static void main(String[] args)

{

String str="abcqwabcedcxabcuabcjkabcnmbabc";

//String str=null;

try

{

int count=countChildStr(str,"abc");

System.out.println("abc在"+str+"中出现的次数为:"+count);

}

catch (NullPointerException ne)

{

Systhttp://em.out.println(ne);

}

catch(RuntimeException re)

{

System.out.println(re);

}

}

public static int countChildStr(String str,String key)

{

if(str==null||key==null)

{

throw new NullPointerException("空指针异常,源字符串和子串都不能为NULL");

}

if(key=="")

{throw new RuntimeException("调用不合法,子串要有内容");}

int count=0,index=0;

while((index=str.indexOf(key,index))!=-1)

{

count++;

index+=key.length();

}

return count;

}

}

字符串练习三

找到两个字符串的最大公共子串

思路:

1.判断较长字符串中是否包含较短字符串,如果包含,则较短字符串则为最大公共子串。

2.如果不包含,就对较短字符串以长度递减的方式取子串,去较长字符串中判断是否包含,如果包含就找到了,不用再找了。

3.重点:对字符串以长度递减的方式取子串

public class StringTest_3

{

public static void main(String[] args)

{

//创建两个不为空的字符串

String str1="abxczwsxcvdfas";

//String str1=null;

String str2="ghwsxcvxcdbgthnnnrfqwe";

try

{

String str=searchMaxCommonStr(str1,str2);

System.out.println("最大公共子串是:"+str);

}

catch (NullPointerException ne)

{

System.out.println(ne);

}

}

public static String searchMaxCommonStr(String str1,String str2)

{

if(str1==null||str2==null)

throw new NullPointerException("空指针异常,参数不能为Null");

//断定较长字符串和较短字符串

String max=(str1.length()>str2.length())?str1:str2;

String min=(str1.equals(max))?str2:str1;

//按长度递减的方式取子串,从min.length~~1

for(int i=min.length();i>0;i--)

{

for(int x=0,y=x+i;y

{

String childStr=min.substring(x,y);

//若较长字符串中包含此子串,则找到了

//否则继续找

if(max.contains(childStr))

return childStr;

}

}

return null;

}

}

运行:

字符串练习四

写一个和trim功能相同的方法

思路:

1.定义两个变量,用来存储两个角标

2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符

3.截取字符串

public class StringTest_4

{

public static void main(String[] args)

{

String str=" abc ws ";

str=myTrim(str);

System.out.println(str);

}

public static String myTrim(String s)

{

int begin=0,end=s.length()-1;

//从头遍历

while(begin<=end && s.charAt(begin)==' ')

{

begin++;

}

//从尾部遍历

while(begin<=end && s.charAt(end)==' ')

{

end--;

}

return s.substring(begin,end+1);

}

}

运行:

{

if(i!=arr.length-1)

System.out.print(arr[i]+",");

else

{

System.out.print(arr[i]+"]\n");

}

}

}

public static void main(String[] args)

{

String arr[]={"nba","abc","cba","zz","qq","haha"};

//打印数组

showArray(arr);

//对数组进行排序并输出

stringSort(arr);

}

}

运行:

字符串练习二

一个子串在字符串中出现的次数

思路:

1.用indexOf方法获取子串在字符串中第一次出现的位置index

2.再用indexOf方法获取以(index+子串长度)为起始的剩下的字符串中子串出现的位置,直到字符串中不再包含子串。可用while循环实现。

3.每次找到后用计数器记录即可。

public class StringTest_2

{

public static void main(String[] args)

{

String str="abcqwabcedcxabcuabcjkabcnmbabc";

//String str=null;

try

{

int count=countChildStr(str,"abc");

System.out.println("abc在"+str+"中出现的次数为:"+count);

}

catch (NullPointerException ne)

{

Systhttp://em.out.println(ne);

}

catch(RuntimeException re)

{

System.out.println(re);

}

}

public static int countChildStr(String str,String key)

{

if(str==null||key==null)

{

throw new NullPointerException("空指针异常,源字符串和子串都不能为NULL");

}

if(key=="")

{throw new RuntimeException("调用不合法,子串要有内容");}

int count=0,index=0;

while((index=str.indexOf(key,index))!=-1)

{

count++;

index+=key.length();

}

return count;

}

}

字符串练习三

找到两个字符串的最大公共子串

思路:

1.判断较长字符串中是否包含较短字符串,如果包含,则较短字符串则为最大公共子串。

2.如果不包含,就对较短字符串以长度递减的方式取子串,去较长字符串中判断是否包含,如果包含就找到了,不用再找了。

3.重点:对字符串以长度递减的方式取子串

public class StringTest_3

{

public static void main(String[] args)

{

//创建两个不为空的字符串

String str1="abxczwsxcvdfas";

//String str1=null;

String str2="ghwsxcvxcdbgthnnnrfqwe";

try

{

String str=searchMaxCommonStr(str1,str2);

System.out.println("最大公共子串是:"+str);

}

catch (NullPointerException ne)

{

System.out.println(ne);

}

}

public static String searchMaxCommonStr(String str1,String str2)

{

if(str1==null||str2==null)

throw new NullPointerException("空指针异常,参数不能为Null");

//断定较长字符串和较短字符串

String max=(str1.length()>str2.length())?str1:str2;

String min=(str1.equals(max))?str2:str1;

//按长度递减的方式取子串,从min.length~~1

for(int i=min.length();i>0;i--)

{

for(int x=0,y=x+i;y

{

String childStr=min.substring(x,y);

//若较长字符串中包含此子串,则找到了

//否则继续找

if(max.contains(childStr))

return childStr;

}

}

return null;

}

}

运行:

字符串练习四

写一个和trim功能相同的方法

思路:

1.定义两个变量,用来存储两个角标

2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符

3.截取字符串

public class StringTest_4

{

public static void main(String[] args)

{

String str=" abc ws ";

str=myTrim(str);

System.out.println(str);

}

public static String myTrim(String s)

{

int begin=0,end=s.length()-1;

//从头遍历

while(begin<=end && s.charAt(begin)==' ')

{

begin++;

}

//从尾部遍历

while(begin<=end && s.charAt(end)==' ')

{

end--;

}

return s.substring(begin,end+1);

}

}

运行:

{

String childStr=min.substring(x,y);

//若较长字符串中包含此子串,则找到了

//否则继续找

if(max.contains(childStr))

return childStr;

}

}

return null;

}

}

运行:

字符串练习四

写一个和trim功能相同的方法

思路:

1.定义两个变量,用来存储两个角标

2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符

3.截取字符串

public class StringTest_4

{

public static void main(String[] args)

{

String str=" abc ws ";

str=myTrim(str);

System.out.println(str);

}

public static String myTrim(String s)

{

int begin=0,end=s.length()-1;

//从头遍历

while(begin<=end && s.charAt(begin)==' ')

{

begin++;

}

//从尾部遍历

while(begin<=end && s.charAt(end)==' ')

{

end--;

}

return s.substring(begin,end+1);

}

}

运行:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:bootstrap为水平排列的表单和内联表单设置可选的图标
下一篇:spring 整合mybatis后用不上session缓存的原因分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~