JavaSE学习值之--String类(一)+https://developer.aliyun.com/article/1413503
2.indexOf方法,lastIndexOf 方法--》不止一个,有多个,构成了方法的重载
1.单个字符(从前往后找)
String str1 = "abcdefghcde"; System.out.println(str1.indexOf('a'));// 0 System.out.println(str1.indexOf('b'));// 1 System.out.println(str1.indexOf('c'));// 2 System.out.println("=================="); System.out.println("从指定index开始访问"); System.out.println(str1.indexOf('c', 3));// 8 返回的是第二个c出现的位置 System.out.println(str1.indexOf('a', 1));// -1 1代表从b开始,后面不含有a System.out.println("=================="); System.out.println("从后往前找"); System.out.println(str1.lastIndexOf('c'));// 8 System.out.println(str1.lastIndexOf('e'));// 10 System.out.println(str1.lastIndexOf('c', 4));// 2
注意:indexOf方法只返回第一次出现的下标(从左往右)
2.查找子字符串(从前往后找)
String str1 = "abcdefghcde"; // 返回子字符串第一次出现位置的下标 System.out.println(str1.indexOf("ab")); System.out.println(str1.indexOf("cd")); System.out.println(str1.indexOf("de")); System.out.println("==================="); System.out.println("从指定索引位置之后返回子字符串出现的位置"); System.out.println(str1.indexOf("cd", 4));// 8 System.out.println(str1.indexOf("de",6));// 9 System.out.println("==================="); System.out.println("从后往前查找"); /** * 注意返回都是第一个字符的下标 */ System.out.println(str1.lastIndexOf("cd"));// 8 System.out.println(str1.lastIndexOf("de"));// 9 System.out.println(str1.lastIndexOf("cd", 5));// 2
5.字符串的转化
1.数值和字符串之间的转化
class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } } public class Test1 { public static void main(String[] args) { /** * 其他类型转字符串(布尔类型和引用类型也能转化) * String.valueOf方法 */ String s1 = String.valueOf(1234); String s2 = String.valueOf(12.34); String s3 = String.valueOf(true); String s4 = String.valueOf(new Student("Hanmeimei", 18)); System.out.println(s1); System.out.println(s2); System.out.println(s3); System.out.println(s4); System.out.println("======================="); /** * 字符串转其他类型 * 通过其他类型的包装类中的parse方法 */ int a = Integer.parseInt("12345"); double b = Double.parseDouble("12.20"); boolean c = Boolean.parseBoolean("true"); System.out.println(a); System.out.println(b); System.out.println(c);
2.大小写互换--》toUpperCase toLowerCase
String str1 = "hello"; String str2 = "WROLD"; String str3 = "Hello"; // 小写转大写 System.out.println(str1.toUpperCase()); // 大写转小写 System.out.println(str2.toLowerCase()); System.out.println(str3.toLowerCase());
3.. 字符串转数组
String str1 = "hello"; char[] value = str1.toCharArray(); for (int i = 0; i < value.length ; i++) { System.out.print(value[i] + " "); } System.out.println(); System.out.println("===================="); // 字符数组转字符串(字符串的构造) char[] value2 = {'h','e','l','l','o'}; String str2 = new String(value2); System.out.println(str2);
4. 格式化(以特定的格式输出字符串)
String s = String.format("%d-%d-%d", 2019, 9,14); System.out.println(s);// 输出2019-9-14
6.字符串替换
用另一个字符串代替当前字符串中的某些内容
String str1 = "hello world"; // 单个字符替换 System.out.println(str1.replace('o', 'x'));// hellx wxrld 两个o都被替换了 // 字符串替换 System.out.println(str1.replace("hello", "xxxxxxx")); // 替换首个位置 // replaceFirst的参数只能是字符串 System.out.println(str1.replaceFirst("o","x"));// hellx world 只替换第一个o // replaceAll 用于基于正则表达式的文本替换 System.out.println(str1.replaceAll("o", "x")); // replace的返回值是一个新的字符串,不是对原字符串进行修改 // java中字符串是常量,无法被修改 String str2 = str1.replace('e','d');
7.字符串的拆分
1.split方法--》返回值是String[],所以要用字符串数组接收
String str1 = "how are you man?"; String[] value = str1.split(" "); for (String s:value) { System.out.println(s); } System.out.println("==================="); // 就分两组 String[] value2 = str1.split(" ",2); for (String s:value2) { System.out.println(s); }
2.特殊字符的拆分
在使用split方法时,传递的参数是字符,但是有些字符本身就有特定的作用(+-*\等等),需要使用转义字符进行转义
1.拆分IP地址
String str = "192.168.1.1" ; String[] result = str.split("\\.") ; for(String s: result) { System.out.println(s); }
1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" .
2. 而如果是 "\" ,那么就得写成 "\\\\" .
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符
String str = "192\\168\\1\\1" ;// 在字符串中使用\需要先进行转义 String[] result = str.split("\\\\") ; for(String s: result) { System.out.println(s); }
2.多次分割(开发常用)
在进行分割时,一个字符串内往往含有多个不同的符号,一次split只能以一个符号进行分割,如果想实现多次分割,可以利用嵌套的for循环进行多次分割
public static void main(String[] args) { String str = "name=李四&age=17"; String[] arr1 = str.split("&"); for (int i = 0; i <arr1.length ; i++) { String[] tmp = arr1[i].split("="); System.out.println(tmp[0]+" = "+ tmp[1]); } }
JavaSE学习值之--String类(三)+https://developer.aliyun.com/article/1413507