字符串的比较、获取、截取、转换、分割方法---Java
String当中与比较相关的常用方法有:
==是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法:
public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true;否则返回false。
注意事项:
1. 任何对象都能用Object进行接收。
2. equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
3. 如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐:"abc".equals(str) 不推荐:str.equals("abc")
public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Demo01StringEquals { 2 3 public static void main(String[] args) { 4 String str1 = "Hello"; 5 String str2 = "Hello"; 6 char[] charArray = {'H', 'e', 'l', 'l', 'o'}; 7 String str3 = new String(charArray); 8 9 System.out.println(str1.equals(str2)); // true 10 System.out.println(str2.equals(str3)); // true 11 System.out.println(str3.equals("Hello")); // true 12 System.out.println("Hello".equals(str1)); // true 13 14 String str4 = "hello"; 15 System.out.println(str1.equals(str4)); // false 16 System.out.println("================="); 17 18 String str5 = null; 19 System.out.println("abc".equals(str5)); // 推荐:false 20 // System.out.println(str5.equals("abc")); // 不推荐:报错,空指针异常NullPointerException 21 System.out.println("================="); 22 23 String strA = "Java"; 24 String strB = "java"; 25 System.out.println(strA.equals(strB)); // false,严格区分大小写 26 System.out.println(strA.equalsIgnoreCase(strB)); // true,忽略大小写 27 28 // 注意,只有英文字母区分大小写,其他都不区分大小写 29 System.out.println("abc一123".equalsIgnoreCase("abc壹123")); // false 30 } 31 32 }
String当中与获取相关的常用方法有:
public int length():获取字符串当中含有的字符个数,拿到字符串长度。
public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串。
public char charAt(int index):获取指定索引位置的单个字符。(索引从0开始。)
public int indexOf(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Demo02StringGet { 2 3 public static void main(String[] args) { 4 // 获取字符串的长度 5 int length = "asdasfeutrvauevbueyvb".length(); 6 System.out.println("字符串的长度是:" + length); 7 8 // 拼接字符串 9 String str1 = "Hello"; 10 String str2 = "World"; 11 String str3 = str1.concat(str2); 12 System.out.println(str1); // Hello,原封不动 13 System.out.println(str2); // World,原封不动 14 System.out.println(str3); // HelloWorld,新的字符串 15 System.out.println("=============="); 16 17 // 获取指定索引位置的单个字符 18 char ch = "Hello".charAt(1); 19 System.out.println("在1号索引位置的字符是:" + ch); 20 System.out.println("=============="); 21 22 // 查找参数字符串在本来字符串当中出现的第一次索引位置 23 // 如果根本没有,返回-1值 24 String original = "HelloWorldHelloWorld"; 25 int index = original.indexOf("llo"); 26 System.out.println("第一次索引值是:" + index); // 2 27 28 System.out.println("HelloWorld".indexOf("abc")); // -1 29 } 30 31 }
字符串的截取方法:
public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串。
public String substring(int begin, int end):截取从begin开始,一直到end结束,中间的字符串。
备注:[begin,end),包含左边,不包含右边。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Demo03Substring { 2 3 public static void main(String[] args) { 4 String str1 = "HelloWorld"; 5 String str2 = str1.substring(5); 6 System.out.println(str1); // HelloWorld,原封不动 7 System.out.println(str2); // World,新字符串 8 System.out.println("================"); 9 10 String str3 = str1.substring(4, 7); 11 System.out.println(str3); // oWo 12 System.out.println("================"); 13 14 // 下面这种写法,字符串的内容仍然是没有改变的 15 // 下面有两个字符串:"Hello","Java" 16 // strA当中保存的是地址值。 17 // 本来地址值是Hello的0x666, 18 // 后来地址值变成了Java的0x999 19 String strA = "Hello"; 20 System.out.println(strA); // Hello 21 strA = "Java"; 22 System.out.println(strA); // Java 23 } 24 25 }
String当中与转换相关的常用方法有:
public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值。
public byte[] getBytes():获得当前字符串底层的字节数组。
public String replace(CharSequence oldString, CharSequence newString):
将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。
备注:CharSequence意思就是说可以接受字符串类型。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Demo04StringConvert { 2 3 public static void main(String[] args) { 4 // 转换成为字符数组 5 char[] chars = "Hello".toCharArray(); 6 System.out.println(chars[0]); // H 7 System.out.println(chars.length); // 5 8 System.out.println("=============="); 9 10 // 转换成为字节数组 11 byte[] bytes = "abc".getBytes(); 12 for (int i = 0; i < bytes.length; i++) { 13 System.out.println(bytes[i]); 14 } 15 System.out.println("=============="); 16 17 // 字符串的内容替换 18 String str1 = "How do you do?"; 19 String str2 = str1.replace("o", "*"); 20 System.out.println(str1); // How do you do? 21 System.out.println(str2); // H*w d* y*u d*? 22 System.out.println("=============="); 23 24 String lang1 = "会不会玩儿呀!你大爷的!你大爷的!你大爷的!!!"; 25 String lang2 = lang1.replace("你大爷的", "****"); 26 System.out.println(lang2); // 会不会玩儿呀!****!****!****!!! 27 } 28 29 }
分割字符串的方法:
public String[] split(String regex):按照参数的规则,将字符串切分成为若干部分。
注意事项:
split方法的参数其实是一个“正则表达式”,今后学习。
今天要注意:如果按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Demo05StringSplit { 2 3 public static void main(String[] args) { 4 String str1 = "aaa,bbb,ccc"; 5 String[] array1 = str1.split(","); 6 for (int i = 0; i < array1.length; i++) { 7 System.out.println(array1[i]); 8 } 9 System.out.println("==============="); 10 11 String str2 = "aaa bbb ccc"; 12 String[] array2 = str2.split(" "); 13 for (int i = 0; i < array2.length; i++) { 14 System.out.println(array2[i]); 15 } 16 System.out.println("==============="); 17 18 String str3 = "XXX.YYY.ZZZ"; 19 String[] array3 = str3.split("\\."); 20 System.out.println(array3.length); // 0 21 for (int i = 0; i < array3.length; i++) { 22 System.out.println(array3[i]); 23 } 24 } 25 26 }