1. 程式人生 > 實用技巧 >字串的比較、獲取、擷取、轉換、分割方法---Java

字串的比較、獲取、擷取、轉換、分割方法---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):忽略大小寫,進行內容比較。

 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值

 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),包含左邊,不包含右邊。

 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意思就是說可以接受字串型別。

 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方法的引數其實是一個“正則表示式”,今後學習。
今天要注意:如果按照英文句點“.”進行切分,必須寫"\\."(兩個反斜槓)

 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 }
分割