在Java中,String类是必不可少的,熟练掌握String类的方法之后,我们会发现原来很难处理的字符串,字符问题交给String类方法是如此的简单
好了,废话不多说,下面开始正式介绍String类的主要方法
1、字符串与字符数组的转换
public class TestDemo {
public static void main(String[] args) {
String str1 = "hello";
char ch[] = str1.toCharArray();//toCharArray()将字符串转换为字符数组
for(int i = 0; i < ch.length; i++){//循环输出字符数组的每一个字符
System.out.print(ch[i]+"\t");
}
System.out.println("");
String str2 = new String(ch); //将字符数组的所有成员转换为字符串
String str3 = new String(ch,0,3);//将字符数组的前三个字符转换为字符串
System.out.println(str2);
System.out.println(str3);
}
}
结果显示如下:
2、取出字符串中指定位置的字符
代码比较简单(说明,本文的所有的字符串操作如不重新定义,则都是基于toCharArray()中定义的str1为准)
System.out.print(str1.charAt(3));//取出字符串中指定位置的字符
结果显示如下:
3、字符串与byte数组的转换
实例如下:
byte[] b = str1.getBytes();//将字符串变为byte数组
System.out.println(new String(b));//将byte数组的全部内容转换为字符串
System.out.println(new String(b,1,3));//将byte数组的部分内容转换为字符串
结果显示为:
4、取得一个字符串的长度
String类使用的是length()方法,在这里要将String类的length()方法与数组的length属性区分开来
实例如下:
System.out.println(str1+"的长度为"+str1.length());
结果显示如下:
5、查找一个指定的字符串子否存在
在String中使用indexof()方法,可以返回指定字符串的位置,如果不存在则返回-1
验证以上方法
String str1 = "abcdefcgh";
System.out.println(str1.indexOf("c"));//查到返回位置
System.out.println(str1.indexOf("c", 3));//从第四个位置开始查起,查到返回位置
System.out.println(str1.indexOf("X"));//没有查到返回-1
显示结果如下:
6、去掉左右空格
在实际开发中,会经常遇到去掉空格的问题,trim()方法很好的解决了这个问题
验证代码如下:
String str1 = " hello ";
System.out.println(str1.trim());
结果显示为:
7、字符串截取
在String中提供了两个substring()方法,一个是从指定位置截取到字符串结尾,一个是截取指定范围的内容
演示代码片段如下:
String str1 = "hello world";
System.out.println(str1.substring(6));//从第七个位置开始截取
System.out.println(str1.substring(0,5));//截取0~5个位置的内容
结果为:
8、按照指定的字符串拆分字符串
在String中通过split()方法来进行字符串的拆分操作,拆分的数据将以字符串数组的形式返回
验证代码如下:
String str1 = "hello my baby";
String[] s = str1.split(" ");//按空格进行字符串的拆分
for(String x : s){//foreach 循环输出数组
System.out.println(x);
}
结果为:
9,、字符的大小写转换也是我们经常需要对字符串的处理,此时就可以用toUpperCase()和toLowerCase()来进行处理
代码如下:
System.out.println("将\"hello world!\"转换为大写为:"+"hello world"
.toUpperCase());
System.out.println("将\"HELLO WORLD!\"转换为小写为:"+"HELLO WORLD"
.toLowerCase());
结果显示如下:
10、判断是否以指定的字符串开头或结尾
String类使用startsWith()和endsWith()来解决这个问题
验证以上方法:
String str1 = "***hello";
String str2 = "world###";
if(str1.startsWith("***")){
System.out.println("\""+str1+"\""+"以***开头");
}
if(str2.endsWith("###")){
System.out.println("\""+str2+"\""+"以###结尾");
}
结果显示如下:
11、不区分大小写进行字符串比较
在String类中可以通过equals()方法进行字符串内容比较,但这种方法是进行大小写区分的,如果要完成大小写不区分的比较则可以使用equalsIgnoreCase()方法
演示代码如下:
String str1 = "HELLO";
String str2 = "hello";
System.out.println("\"HELLO\"equals\"hello\""+str1.equals(str2));
System.out.println("\"HELLO\"equalsIgnoreCase\"hello\""
+str1.equalsIgnoreCase(str2));
结果显示为:
12、将一个指定的字符串替换成其他的字符串
String的replaceALL()很好的解决了这个问题
验证以上方法:
String str = "hello";
String newStr = str.replaceAll("l", "**");
System.out.println("替换之后的结果为"+newStr);
结果为:
好了基本的方法就以上这些,可能有些不全
*****以下为一道比较常见的字符串处理的题目*****
演示代码如下:
import java.util.Arrays;
public class TestDemo1 {
public static void main(String[] args) {
/*
* 问题描述:
* 将一个字符串长句按照它的首字母的Assii码排序后重新输出*/
String str = "Good Good Study Day Day Up!";
String[] s = str.split(" ");
Arrays.sort(s);
String newstr = "";
for(int i = 0; i < s.length; i++){
newstr = newstr + s[i] + " ";
}
System.out.println("newstr是"+newstr);
}
}
显示结果如下
以上没考虑字符串引用改变问题,开发中最好用StringBuffer
以下为演示代码:
String str = "Good Good Study Day Day Up!";
String[] s = str.split(" ");
Arrays.sort(s);
StringBuffer sb = new StringBuffer();
for(int i = 0; i < s.length; i++){
sb.append(s[i]+" ");
}
System.out.println("newstr是"+sb);
显示结果: