string 类代表字符串。java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。
string 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、
创建字符串副本并将所有字符全部转换为大写或小写。
string类是最常用的类之一,下面就通过几个练习,熟悉string类中的提供的重要方法。
字符串练习一
给定一个字符串数组,按照字典顺序,进行大小写排序
思路:
1.对数组排序,可以用选择排序、冒泡排序等等。
2.for循环嵌套,比较,交换位置。
3.不同之处,以前比较的是数字,用的是比较运算符;
现在比较的是字符串对象,应该使用compareto方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
public class stringtest_1
{
//对字符串数组进行排序
public static void stringsort(string[] arr)
{
//采用冒泡排序
for ( int i= 0 ;i<arr.length- 1 ;i++)
{
for ( int j= 0 ;j<arr.length- 1 -i;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<arr.length;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.每次找到后用计数器记录即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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)
{
system.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.重点:对字符串以长度递减的方式取子串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
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<min.length();x++,y++)
{
string childstr=min.substring(x,y);
//若较长字符串中包含此子串,则找到了
//否则继续找
if (max.contains(childstr))
return childstr;
}
}
return null ;
}
}
|
运行:
字符串练习四
写一个和trim功能相同的方法
思路:
1.定义两个变量,用来存储两个角标
2.分别从头和尾遍历字符串,直到找到第一个不为空格的字符
3.截取字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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 );
}
}
|
运行:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!
原文链接:http://www.cnblogs.com/wsw-tcsygrwfqd/p/6403601.html