------- android培训、java培训、期待与您交流! ----------
String类练习
模拟一个trim方法,去除字符串两端的空格
思路:
1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。
结尾处判断空格也是如此。
2,当开始和结尾都判断到不是空格时,就是要获取的字符串。
public static String myTrim(String str)
{
int start = 0,end = str.length()-1;
while(start<=end && str.charAt(start)==' ')
start++;
while(start<=end && str.charAt(end)==' ')
end--;
return str.substring(start,end+1);
}
从字符串两端,通过while循环分别遍历字符,循环终止条件有两个,一个是两端遍历到了同一位置,另外一个是遇到空格,空格是通过charAt来判断的。循环结束后,start表示字符串左端第一个不为空格的角标,end表示从右端开始第一个不为空格的角标。最后返回除去空格后的字
串,由于在调用substring方法是含头不含尾,所以传入end+1。
将一个字符串进行反转
将字符串中指定部分进行反转,"abcdefg";
思路:
1,曾经学习过对数组的元素进行反转。
2,将字符串变成数组,对数组反转。
3,将反转后的数组变成字符串。
4,只要将或反转的部分的开始和结束位置作为参数传递即可。
public static String reverseString(String s,int start,int end)
{
//字符串变数组。
char[] chs = s.toCharArray();
//反转数组。
reverse(chs,start,end);
//将数组变成字符串。
return new String(chs);
}
public static String reverseString(String s)
{
return reverseString(s,0,s.length());
}
private static void reverse(char[] arr,int x,int y)
{
for(int start=x,end=y-1; start<end ; start++,end--)
{
swap(arr,start,end);
}
}
private static void swap(char[] arr,int x,int y)
{
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
因为不能直接对字符串进行反转操作,所以可以先将字符串转换为字符数组,然后将字符数组
反转,最后再将字符数组转换为字符串。上例中分别将不同的功能封装不同的方法,可以提供代码的复用性,降低耦合性。
获取一个字符串在另一个字符串中出现的次数
获取"kk"在"abkkcdkkefkkskk"中出现的次数
思路:
1,定义个计数器。
2,获取kk第一次出现的位置。
3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
每获取一次就计数一次。
4,当获取不到时,计数完成。
这个练习有多种方法
方法一
public static int getSubCount_2(String str,String key)
{
int count = 0;
int index = 0;
while((index= str.indexOf(key,index))!=-1)
{
sop("index="+index);
index = index + key.length();
count++;
}
return count;
}
public static void sop(String str)
{
System.out.println(str);
}
index=str.indexOf(key,index)将从角标index开始遍历str中kk第一次出现的位置,并返回此位置,如果没有key则返回-1,循环结束。初始值为0,表示从str第一个位置开始遍历。每循环一次,index都将重新赋值,新的index为最近一次遍历到key的位置再加上key的长度。每循环一次计数器自增一次。
方法二
public static int getSubCount(String str,String key)
{
int count = 0;
int index = 0;
while((index=str.indexOf(key))!=-1)
{
sop("str="+str);//
str = str.substring(index+key.length());
count++;
}
return count;
}
通过 index=str.indexOf(key)来获取key在str中第一次出现的位置。只是index在循环中没有重新赋值,而是通过str = str.substring(index+key.length()),将每次查找到一个key就将剩余部分,抽取为一个新的字串,再在这个字串中查找key。
方法三
String str = "kkabkkcdkkefkks";
sop("count====="+str.split("kk").length);不建议使用。
调用str.split("kk").length会返回一个字符串数组。str被切割后分成几段,每一段作为字符串数组
的一个元素。但是有一个问题,当"kk"在str最左边时,此时调用splite方法,会在第一个"kk"前
面返回一个空字符串。结果count值就要比字符串str中"kk"个数多一个,然而最末端有"kk"则不会出错,这是因为split(String regex)方法造成的,如果字符串切割后会抛弃末尾的空字符串。
所以不建议使用此方法。
获取两个字符串中最大相同子串
找到字符串"abcwerthelloyuiodef"和"cvhellobnm"中的最大相同字串
此题,应该从子串的长度考虑。
思路:
1,将短的那个子串按照长度递减的方式获取到。
2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。
public static String getMaxSubString(String s1,String s2) { String max = "",min = ""; //让max表示长度那个字符串,min表示短的那个字符串 max = (s1.length()>s2.length())?s1: s2; min = (max==s1)?s2: s1; // sop("max="+max+"...min="+min); for(int x=0; x<min.length(); x++) { for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) { String temp = min.substring(y,z); sop(temp); if(max.contains(temp))//if(s1.indexOf(temp)!=-1) return temp; } } return ""; }
max表示长度较大的那个字符串,min表示长度较小的那个字符串,temp表示最大相同字符串,当max,min没用相同字符串是返回空字符串。本题中,是通过两个循环,不断遍历min中的字串,然后判断max中是否含有此字符串。通过第一个循环,决定字串长度,min.length-x为字串长度。在第二个循环中,从min中拿到长度为min.length-1的所有字串,通过contains判断max中是否含有此字符串。如果有结束循环,返回此字符串,如果没有,退出内层循环,字串长度减一,进入内层循环,接着判断。
相关推荐
Java_String_的方法~~~~~~~~~~~~~~~~
JAVA_String.format
java基础String类选择题练习题,文档包含了答案与分析,适合学习用,本文档仅仅用于学习分享,不得用于商业用途
JAVA_字符串(String)博客中的Demo
to find character in astring
java中int_char_string三种类型的相互转换
applet类和String类的基本用法与语句,有详细知识点、例题、代码
codeblocks中报错:'to_string' was not declared in this scope解决方案
04_java_string
java中String_十六进制String_byte[]之间相互转换
java_byte与char、String互转.................
java______反编译工具.zip
java中String的一些练习,能更加熟练String的方法,更加好的学习JAVA
定义一个学生类  Java_Student 包括成员变量“学号”  、  “班号”  、  “姓名”  、  “性别”  、  “年龄”  成员方法:  “获得学号”  、  “获得班号...
内容为:【第5章:面向对象基础】_String类的常用方法.rar
java_string_basics_one 该存储库包含为Mozilla Java String Basics 1分配创建HTML文件。 可以在以下位置找到这些作业的链接: : :
java中String类型转换方法.pdf
KMP算法,详细的解释了如何去匹配字符串。做成了实验报告,希望给大家帮助。
code for finding similarity between programs the text that has been entered so can find similar items
83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中...