本文介绍了Java中字符串操作的常用方法,如获取长度、字符操作、索引查找、字符串转换、拼接、分割、替换以及String和StringBuffer类的区别,重点讲解了这两种类在处理字符串时的特性和适用场景。
String类
1.获取功能的常用方法
int length( ) 获取字符串长度
char charAt( ) 获取指定位置上的字符
int indexOf( ) 获取字符首次出现的位置,也可以从指定位置开始查找
lastIndexOf( ) 从后往前找
String substring( ) 从指定位置开始截取一个字符串副本
public static void main(String[] args) { //获取功能 String s1 = "abcdabcd"; //int length() 获取字符串长度 System.out.println(s1.length()); // 8 //char charAt() 获取指定位置上的字符 System.out.println(s1.charAt(4)); //索引4对应的字符 a //int indexOf() 获取字符首次出现的位置 System.out.println(s1.indexOf("a")); //注意是首次出现的位置 //int indexOf(str: ,fromindex: ) 从指定位置开始查找 System.out.println(s1.indexOf("a",4)); //lastIndexOf() 从后往前找 System.out.println(s1.lastIndexOf("a")); //String substring() 从指定位置开始截取一个字符串副本 String s2=s1.substring(2,6); //截取索引2~6的字符串(不包含索引6对应的字符) System.out.println(s2); // 2 <= res < 6 }
2.转换功能的常用方法
String toUpperCase( ) 将字符串内容全部转换为大写
String toLowerCase( ) 将字符串内容全部转换为小写
String concat(String str) 拼接指定字符串内容到原字符串末尾
String [ ] split(分割符) 通过分割符将字符串分割并以数组形式返回
public static void main(String[] args) { String s1="WoShiChinese"; System.out.println(s1.toUpperCase()); //转大写 System.out.println(s1.toLowerCase()); //转小写 String s2 ="我爱中国"; System.out.println(s2.concat(s1)); //拼接s1字符串内容到s2字符串末尾 //String[] split(分割符) String s3 = "张三:中国人;"+"Tom:英国人;"+"梅西:阿根廷人;"; String[] strings = s3.split(";"); //通过" ; "来截取s3字符串 System.out.println(Arrays.toString(strings)); }
3.替换功能的常用方法
String replace(char old,char new) 单个字符替换
String replace(String old,String new) 整个字符串替换
replaceAll(String regex, String replacement) 替换字符串中所有数字
replaceFirst(String regex, String replacement) 替换字符串中第一个数字
public static void main(String[] args) { String s1 = " ab5cd7bda"; //用"A"替换字符串中所有的"a" System.out.println(s1.replace("a","A")); //用"G"替换字符串中所有数字 \\d表示所有字符串中所有的数字 System.out.println(s1.replaceAll("\\d","G")); //用"R"替换字符串中第一个数字 System.out.println(s1.replaceFirst("\\d","R")); }
4.去除字符串两端空格
String trim( ) 去除字符串两端空格(字符串中间的空格不能去除)
public static void main(String[] args) { //String trim() 去除字符串两端空格 String s2 =" abcEF 13aD1 "; System.out.println(s2); System.out.println(s2.length()); //原字符串长度 System.out.println(s2.trim());//去除两端空格,字符串中间的空格不能去除 System.out.println(s2.trim().length()); //去除空格后字符串的长度 }
StringBuffer类
需要注意:
String可以直接创建字符串对象,而StringBuffer不能,需要新创建一个字符串对象。
String s1 = "abc"; StringBuffer s2 = new StringBuffer("abc");
添加功能
public StringBuffer append(String str) 在原字符串末尾添加字符串
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abc"); s1.append("def"); // 不能使用+= System.out.println(s1); }
输出:abcdef
public StringBuffer insert(int offset,String str) 向指定位置插入字符串
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abc"); //向字符串s1末尾添加"def" s1.append("def"); // 不能使用+= System.out.println(s1); //向指定位置插入字符串 s1.insert(1,"ABC"); //向索引为1的位置插入字符串"ABC" System.out.println(s1); }
输出:aABCbcdef
删除功能
public StringBuffer deleteCharAt(int index) 删除单个字符
public StringBuffer delete(int start,int end) 删除指定区间的元素,不包含结尾
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abcdef"); s1.deleteCharAt(2); //删除索引为2的字符 System.out.println(s1); //删除指定区间的元素,不包含结尾 StringBuffer s2 = new StringBuffer("ABCDEF"); s2.delete(1,3); System.out.println(s2); }
替换功能
public StringBuffer replace(int start,int end,String str)
StringBuffer s1 = new StringBuffer("abcdef"); s1.replace(0,3,"ABC"); System.out.println(s1);
输出:ABCdef
反转功能
public StringBuffer reverse( )
StringBuffer s1 = new StringBuffer("abcdef"); s1.reverse(); //反转 System.out.println(s1);
输出:fedcba
截取功能
从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abcdef"); //从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变 String s2=s1.substring(1,4); System.out.println(s1); System.out.println(s2); }
StringBuffer和String的区别
String修饰的字符串是一个值不能改变的字符串,用String声明的字符串对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时且占用空间。
StringBuffer是内容可以改变的字符串,值可以改变且不需要创建新对象,在多任务执行时是安全的适合单线程。