一文看懂String類中的常用方法

1、int length(): 返回字符串的長度: return value.length
2、char charAt(int index): 返回某索引處的字符return value[index]
3、boolean isEmpty(): 判斷是否是空字符串: return value.length == 0

String str = " HELLO world ";

System.out.println(str.length());//13
System.out.println(str.charAt(0));//" "第一個空格
System.out.println(str.charAt(9));//r
System.out.println(str.isEmpty());//false

4、String toLowerCase(): 使用默認語言環境, 將 String 中的所有字符轉換為小寫
5、String toUpperCase(): 使用默認語言環境, 將 String 中的所有字符轉換為大寫

String str = " HELLO world ";

String s1 = str.toLowerCase();//轉換所有字符為---->小寫
String s2 = str.toUpperCase();//轉換所有字符為---->大寫

System.out.println(s1);//" hello world "
System.out.println(s2);//" HELLO WORLD "
System.out.println(str);//" HELLO world "   不改變原值

6、String trim(): 返回字符串的副本, 忽略前導空白和尾部空白

String str = " HELLO world ";

String s3 = str.trim();//去除字符串首尾空格
System.out.println(s3);//"HELLO world"

7、boolean equals(Object obj): 比較字符串的內容是否相同
8、boolean equalsIgnoreCase(String anotherString): 與equals方法類似, 忽略大小寫

String s1 = "HELLOWORLD";
String s2 = "helloworld";

System.out.println(s1.equals(s2));//false
System.out.println(s1.equalsIgnoreCase(s2));//true    忽略大寫小寫比較

9、String concat(String str): 將指定字符串連接到此字符串的結尾。 等價於用「+」

String s3 = s1.concat("降龍十八掌");//連接字符串,等價於 「+」
System.out.println(s3);//HELLOWORLD降龍十八掌

10、int compareTo(String anotherString): 比較兩個字符串的大小

String s4 = "abc";//97、98、99
String s5 = new String("abg");//97、98、103
System.out.println(s4.compareTo(s5));//-4   遇到相等跳過,遇到不同作差,輸出
String s6 = "aag";//97、97、103
System.out.println(s4.compareTo(s6));//1

11、String substring(int beginIndex): 返回一個新的字符串, 它是此字符串的從beginIndex開始截取到最後的一個子字符串。
12、String substring(int beginIndex, int endIndex) : 返回一個新字符串, 它是此字符串從beginIndex開始截取到endIndex(不包含)的一個子字符串。

String s7 = "降龍十八掌、六脈神劍、乾坤大挪移";
String s8 = s7.substring(6);//切片操作
String s9 = s7.substring(6,10);左閉右開[)

System.out.println(s8);//六脈神劍、乾坤大挪移
System.out.println(s9);//六脈神劍

13、boolean endsWith(String suffix): 測試此字符串是否以指定的後綴結束

14、boolean startsWith(String prefix): 測試此字符串是否以指定的前綴開始

15、boolean startsWith(String prefix, int toffset): 測試此字符串從指定索引開始的子字符串是否以指定前綴開始

String s1 = "六脈神劍、九陽神功、一陽指";
boolean s2 = s1.startsWith("六");		//以xx開始
System.out.println(s2);//true

boolean s3 = s1.startsWith("九陽",5);		//從第index處 以xx開始
System.out.println(s3);//true

boolean s4 = s1.endsWith("指");			//以xx結束
System.out.println(s4);//true

16、boolean contains(CharSequence s): 當且僅當此字符串包含指定的 char 值序列時,返回 true

String s1 = "六脈神劍、九陽神功、一陽指";

String s5 = "九陽神功";
System.out.println(s1.contains(s5));//true

17、int indexOf(String str): 返回指定子字符串在此字符串中第一次出現處的索引

18、int indexOf(String str, int fromIndex): 返回指定子字符串在此字符串中第一次出現處的索引,從指定的索引開始
19、int lastIndexOf(String str): 返回指定子字符串在此字符串中最右邊出現處的索引

20、int lastIndexOf(String str, int fromIndex): 返回指定子字符串在此字符串中最後一次出現處的索引,從指定的索引開始反向搜索
註: indexOf和lastIndexOf方法如果未找到都是返回-1

String s1 = "六脈神劍、九陽神功、一陽指";

System.out.println(s1.indexOf("神劍"));//2
System.out.println(s1.indexOf("神劍", 6));//-1
System.out.println(s1.lastIndexOf("神"));//7
System.out.println(s1.lastIndexOf("神", 5));//2

21、String replace(char oldChar, char newChar): 返回一個新的字符串, 它是通過用 newChar 替換此字符串中出現的所有 oldChar 得到的。

22、String replace(CharSequence target, CharSequence replacement): 使用指定的字面值替換序列替換此字符串所有匹配字面值目標序列的子字符串。

String s1 = "六脈神劍、九陽神功、一陽指";
System.out.println(s1.replace("神", "鬼"));//六脈鬼劍、九陽鬼功、一陽指

23、String replaceAll(String regex, String replacement) : 使用給定的replacement 替換此字符串所有匹配給定的正則表達式的子字符串。

String str = "12hello34world5java7891mysql456";
//把字符串中的數字替換成 ","如果結果中開頭和結尾有,的話去掉
String string = str.replaceAll("\\d+", ",").replaceAll("^,|,$", "");//正則表達式
System.out.println(string);
//hello,world,java,mysql

24、String replaceFirst(String regex, String replacement) : 使用給定的replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。

String s1 = "六脈神劍、九陽神功、一陽指";
System.out.println(s1.replace("神", "鬼"));//六脈鬼劍、九陽鬼功、一陽指
String str = "1111AAAA2222BBBB999";
//把字符串中的數字替換成,,如果結果中開頭和結尾有,的話去掉
String string = str.replaceFirst("\\d+", ",");
System.out.println(string);//,AAAA2222BBBB999

25、boolean matches(String regex): 告知此字符串是否匹配給定的正則表達式。

String str = "12345";
//判斷str字符串中是否全部有數字組成,即有1-n個數字組成
boolean matches = str.matches("\\d+");
System.out.println(matches);//true


String tel = "0476-4534289";
//判斷這是否是一個赤峰的固定電話
boolean result = tel.matches("0476-\\d{7,8}");
System.out.println(result);//true

26、String[] split(String regex): 根據給定正則表達式的匹配拆分此字符串。

27、String[] split(String regex, int limit): 根據匹配給定的正則表達式來拆分此字符串, 最多不超過limit個, 如果超過了, 剩下的全部都放到最後一個元素中。

String str = "hello|world|java";
String[] strs = str.split("\\|");
for (int i = 0; i < strs.length; i++) {
    System.out.print(strs[i] + "\t");
}
//hello	world	java
System.out.println();
String str2 = "hello.world.java";
String[] strs2 = str2.split("\\.",2);
for (int i = 0; i < strs2.length; i++) {
    System.out.print(strs2[i] + "\t");
}
//hello	world.java