您的位置:首页 > 其它

练习二 将字符串反转 练习三 获取关键字出现的次数 练习四 获取2个字符串中最大公共子串

2016-07-09 17:13 711 查看
/*
练习二 将字符串反转 练习三 获取关键字出现的次数 练习四 获取2个字符串中最大公共子串

String类适用于描述字符串事物。
那么它就提供了多个方法对字符串进行操作。
常见的操作有哪些?
"abcd"
1。获取。
1.1 字符串中的包含的字符数,也就是字符串的长度。
int length();获取长度。区别于数组的length属性,带()是方法
1.2 根据位置获取位置上某个字符。
char charAt(int index):
1.3 根据字符获取该字符在字符串中位置。
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置.

int indexOf(String str):返回的是str在字符串中第一次出现的位置.
int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置.

int lastIndexOf(int ch):

2,判断
2.1字符串中是否包含某一个子串
boolean contains(str):
特殊:indexOf(str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在.
所以,也可以用于对指定判断是否包含.
if(str.indexOf("aa")!=-1)
而且该方法即可以判断,又可以获取出现的位置.
2.2字符中是否有内容。
boolean isEmpty();原理就是判断长度是否为0."",null
2.3字符串是否是以制定内容开头。
boolean startWith(str);
2.4字符串是否是以制定内容结尾。
boolean endsWith(str);
2.5 判断字符串内容是否相同.复写了Object类中的equals方法.
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写.
boolean equalsIgnoreCase();
3.转换
3.1 将字符数组至成字符串.
构造函数:String(char[])
String(char[],offset起始下标,count个数):将字符数组中的一部分转成字符串.
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count)
static String valueOf(char[]);
3.2 将字符串转成字符数组.
char[] toCharArray();
3.3 将字节数组转成字符串.
String(byte[])
String(byte[],offset起始下标,count个数):将字符数组中的一部分转成字符串.
3.4 将字符串转成字节数组.
byte[] getBytes();
3.5  将基本数据类型转成字符串
static String valueOf(int)
static String valueOf(double)
//自动类型转换 转换成字符串3+"";//Sting.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的
4,替换
String replace(oldchar,newchar);
5,切割
String[]  split(regex);
6, 子串,获取字符串中的一部分。
String substring(begin);
String substring(begin,end);//会丢掉尾部,保留尾部要+1
7.转换,去除空格,比较。
7.1 将字符串转成大写或者小写。
String toUpperCase();
String toLOwerCase();
7.2 将字符串两端的多个空格去除.
String trim();
7.3 对两个字符串进行自然顺序的比较.
int compareTo(string);
*/

class StringTest
{
public static void method_7()
{
String s= "    Hello Java  ";
sop(s.toLowerCase());
sop(s.toUpperCase());
sop(s.trim());
String s1 ="abc";
String s1 ="abc";
sop(s1.compareTo(s2));
}
public static void method_sub()
{
String s="abcdef";
sop(s.substring(2));//从指定位置开始到结尾。如果角标不存在,会出现字符串角标异常
sop(s.substring(2,4));//包含头,不包含尾本身角标。s.substring(0,s.length());

}
public static void method_split()
{
String s= "Zhangsa,lisi,wangwu";
String[] arr = s.split(",");
for(int x= 0;x<arr.length;x++)
{
sop(arr[x]);
}
}

public static void method_replace()
{
String s="hello java";
s.replace('a','n');//如果要替换的字符不存在,返回的还是原字符串
sop("s="+s);
sop("s1="+s1);
}
public static void method_trans()
{
char[] arr = {'a','b','d','e','f'};
String s = new String(arr);//以 数组arr 为参数传入New实例化的String s
sop("s="+s);
String s1 = "zxcvbnm";
char[] chs = s1.toCharArray();
for(int x=0;x<chs.lenth;x++)
{
sop("chs="+chs);
}
}
public static void method_is()
{
String str= "ArrayDemo.java"
sop(str.startsWith("Array"));//判断文件名称是否是Array开头
sop(str.endsWith(".java"));//判断文件名称是否是.java结尾
sop(str.contains("Demo"));//判断文件名称是否 包含Array
}
public static void method_get()
{
public static void method_get()
String str = "abcdeakpf";
sop(str.length());  //长度
sop(str.charAt(4));//根据索引下标获取字符//当访问到字符串中不存在的角标是会发生StringIndexOutException
sop(str.indexof('m',3));//根据字符获取索引,从下标3开始查找//如果没有找到,返回-1
sop(str.lastindexof('a',5);//从下标5开始右边末尾开始数过来找字符的索引
}

class static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
String s = "    ab cd    ";

sop("("+s+")");
s = mytrim(s);
sop("("+s+")");
}

//练习二 将字符串反转
/*
思路:
1,将字符串变成数组.
2,对数组反转.
3,将数组变成字符串.
*/

/*
练习三 获取关键字出现的次数
*/
/*
练习四 获取2个字符串中最大相同子串,第一个动作:将短的那个串进行长度一次递减的子串打印。
思路:
1.将短的那个子串按照长度递减的方式获取到
2.将每获取的子串去长串中判断是否包含。
如果包含,已经找到!。
*/
//练习四 获取2个字符串中最大相同子串
public static String getMaxSubString(String s1,String s2)
{
String max = "",min = "";
max = (s1.length()>s2.length())?s1:s2;//判断2个字符串长度,区分长字符串和短字符串
min = (max==s1)?s2:s1;
for(int x=0;x<min.length();x++)//假设min是短的,外循环遍历整个
{
for(int start=0,end=min.length()-x;z<=min.length();y++,z++)//s是头角标,e是尾角标,s与e自动自增
{
String temp = min.substring(start,end);//substring()方法不包含尾本身角标,因此end用length()正好不会越界
if(max.contains(temp))//if(s1.indexOf(temp)!=-1)//长字符串包含短字符串,如果判断有了,就表示找到了最长子串
return temp;//把找到的最长子串返回出去
}
}
returen "";
}
//练习三 获取关键字出现的次数
public static int getSubCount_2(String str,String key)
{
int count = 0;//计数器
int index = 0;//索引

while ((index=str.indexOf(key))!=-1)//indexOf(key)获取关键字的索引位置,条件为-1表示不存在时推出,循环执行
{
sop("str="+str);
index = index + key.length();
//索引= 索引+关键字的长度,循环执行
count++;
}
return count;
}
public static int getSubCount(String str,String key)
{
int count = 0;//计数器
int index = 0;//索引

while ((index=str.indexOf(key,index))!=-1)//indexOf(key)获取关键字的索引位置,从index开始查找
{
sop("str="+str);
str = str.substring(index+key.length());//substring(int beginIndex)
//返回一个新的字符串,它是此字符串的一个子字符串
count++;
}
return count;
}
//练习二 将字符串反转
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)
{
/*
//字符串变数组
char[] chs = s.toCharArray();
//反转数组.
reverse(chs);
//将数组变成字符串.
return new String(chs);
*/
return reverseString(s,0,s.length()-1);
}

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 reverse(char[] arr)
{
for(int start=0,end=arr.length-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;
}

//练习一 去除字符串两端空格。
public static String MyTrim(String str)
{
int start = 0,end = str.length()-1;
String s = new String;
while(start<=end && s.charAt(start)==' ')
start++;
while(start<=end && s.charAt(end)==' ')
end--;
return str.substring(start,end+1);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息