一、String类的介绍
String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。 字符串不变; 它们的值在创建后不能被更改。
二、字符串常用函数
1.int length() 获取字符串的长度
String str = "hello world!"; 声明并初始化 // 获取str的长度 System.out.println(str.length()); 运行结果: 12
2.char charAt(int index): .
String str = "hello world!"; // 截取下标为1的字符 System.out.println(str.charAt(1)); 返回指定索引处的char值 运行结果: e
3. int indexOf(int ch)
String str = "hello world!"; // 返回的是ch在字符串中第一次出现的索引位置 System.out.println(str.indexOf("w")); 运行结果:6
4. int indexOf(int ch,int fromIndex)
String str = "hello world!"; // 从formIndex指定位置开始,获取ch在字符串中出现的索引位置 System.out.println(str.indexOf("w",7)); 运行结果:-1
5. int indexOf(String str)
String str = "hello world!"; //返回的是str在字符串中第一次出现的索引位置 System.out.println(str.indexOf("d")); 运行结果:10
6.lastIndexOf 返回指定字符在此字符串中最后一次出现处的索引
String Str = new String("33923705321@qq.com"); String SubStr1 = new String("qq"); String SubStr2 = new String("com"); System.out.print("查找字符 o 最后出现的位置 :" ); System.out.println(Str.lastIndexOf( 'o' )); System.out.print("从第14个位置查找字符 o 最后出现的位置 :" ); System.out.println(Str.lastIndexOf( 'o', 14 )); System.out.print("子字符串 SubStr1 最后出现的位置:" ); System.out.println( Str.lastIndexOf( SubStr1 )); System.out.print("从第十五个位置开始搜索子字符串 SubStr1最后出现的位置 :" ); System.out.println( Str.lastIndexOf( SubStr1, 15 )); System.out.print("子字符串 SubStr2 最后出现的位置 :" ); System.out.println(Str.lastIndexOf( SubStr2 )); 运行结果: 查找字符 o 最后出现的位置 :16 从第14个位置查找字符 o 最后出现的位置 :-1 子字符串 SubStr1 最后出现的位置:12 从第十五个位置开始搜索子字符串 SubStr1最后出现的位置 :12 子字符串 SubStr2 最后出现的位置 :15
7.toUpperCase() 转换成大写 toLowerCase()转换成小写
8.String[] split(“字符”) 根据给定的正则表达式的匹配来拆分此字符串。形成一个新的String数组。
String str = "hello,world,你,好"; String[] strs = str.split(","); for (String s : strs) { System.out.println(s); } 运行结果: hello world 你 好 String str="username=? or username=? and pwd=?"; String[] str1=str.split("or|and"); for (int i = 0; i < str1.length; i++) { System.out.print(" "+str1[i]);结果为username=? username=? pwd=? }
9.String trim()去掉字符串左右空格
10.String replace(char oldChar,char newChar)新字符替换旧字符
String str = "hello,world,你,好"; String replace = str.replace(",","-"); System.out.println(replace); 运行结果: hello-world-你-好
11.String substring(int beginIndex,int endIndex) 截取字符串,包括beginIndex位置的,不包括endIndex位置的
String str = "hello,world,你,好"; // 截取0-4位置的字符串,包括0,不包括4 String substring = str.substring(0, 4); System.out.println(substring); 运行结果: hell String s = new String("33923705321@qq.com.ywy"); System.out.println ( s.substring(1, s.lastIndexOf("@"))); //截取@之前的字符串 运行结果:33923705321 // 获得第一个点的位置 int index=s .indexOf("."); index = s .indexOf(".", index + 1); //根据第二个点的位置,截取 字符串。得到结果 result String result=s .substring(index+1); System.out.println(result);//输出第二个点位置的字符 运行结果:ywy
- boolean equalsIgnoreCase(String str2)
忽略大小写的比较两个字符串的值是否一模一样,返回一个布尔值
bolean equals(String str2) 比较两个字符串的值是否一模一样
String str = "hello world!"; String str2 = "HELLO WORLD!"; System.out.println(str.equalsIgnoreCase(str2)); System.out.println(str.equals(str2)); 运行结果: true false
13.boolean contains(String str2) 判断一个字符串里面是否包含指定的内容,返回一个布尔值
String str = "hello world!"; System.out.println(str.contains("hel")); 运行结果: true
- boolean startsWith(String str)测试此字符串是否以指定的前缀开始。返回一个布尔值
boolean endsWith(String str)测试此字符串是否以指定的后缀结束。返回一个布尔值 - String replaceAll(String str1,Stringstr2)将某个内容全部替换成指定内容
String str = "hello world!"; String replaceAll = str.replaceAll("l", "m"); System.out.println(replaceAll); 运行结果: hemmo wormd!
16.String replaceFirst(String str1,String str2) 将第一次出现的某个内容替换成指定的内容
String str = “hello world!”;
String replaceAll = str.replaceFirst(“l”, “m”);
System.out.println(replaceAll);
运行结果:
hemlo world!
17.字符串反转
public static void fun(String string){ char[] array = string.toCharArray(); for(int i = 0; i < array.length/2; i++){ char temp = array[i]; array[i] = array[array.length - i - 1]; array[array.length - i -1] = temp; } String str = String.valueOf(array); System.out.println(str); //传入abcde 输入edcba }
18.统计字符出现次数
// 定义字符串 String string = "fdafasfsfasf"; // 定义map容器 Map<Character, Integer> map = new HashMap<Character, Integer>(); for (int i = 1; i < string.length(); i++) { char ch = string.charAt(i); if (map.containsKey(ch)) { int count = map.get(ch); count = count + 1; map.put(ch, count); } else { map.put(ch, 1); } } // 遍历map集合 Set<Character> keySet = map.keySet(); for (Character chars : keySet) { System.out.println("字符:" + chars + ",出现的次数为:" + map.get(chars)); } } 运行结果 :字符:a,出现的次数为:3 字符:s,出现的次数为:3 字符:d,出现的次数为:1 字符:f,出现的次数为:4 //获取一个字符串,查找这个字符串出现的次数; 输入abcabcacb ,"a" 输出3 public static int getStringCount(String str, String key) { int count = 0; int index = 0; int num = str.indexOf(key); while ((index = str.indexOf(key)) != -1) { count++; str = str.substring(str.indexOf(key) + key.length()); } return count; }
18.将一个数组从左开始第几位之前的进行旋转:左旋数组
如:将"abcdef"第2位之前(a为0号位置)进行旋转----》“cdefab”。
public class TextDemo4 { public static void leftRotateString(String str, int n) { char[]array1 = str.toCharArray();//将给定字符串转换成数组 char[]array2 = new char[array1.length];//定义新数组存储旋转后的元素 int j = 0;//i表示源数组的下标,j表示新数组的下标 for (int i = n; i <array1.length ; i++) { array2[j] = array1[i]; j++; } for (int i = 0; i <n ; i++) { array2[j] =array1[i]; j++; } String str1 = new String(array2); System.out.println(str1); } public static void main(String[] args) { leftRotateString("abcdef",2); } }