Java中對String字符串的常用操作
阿新 • • 發佈:2018-01-01
with 3.4 () val pareto exc case byte ring
這周遇到了一個需要處理String字符串的問題,用到了split將字符串解析為一個String的數組,還用到了某些替換字符的操作。
1 /* 2 **將String source按‘,’間隔開,再分別對array的每個元素進行操作 3 **註意轉義的換行符應該是‘\\\\n’ 4 */ 5 String[] array = source.split("\\,"); 6 7 /* 8 **將所有a替換為b或者刪去所有換行符 9 */ 10 source = source.replaceall("a", "b"); 11 source = source.repalceall("\\\\n", "");
String類適用於描述字符串事物。
那麽它就提供了多個方法對字符串進行操作,現在將Java中一些常用的對String的操作整理如下。
常用的方法如下:
1、獲取:
1.1 字符串中包含的字符數,也就是字符串的長度。 int length():獲取長度。 1.2 根據位置獲取該位置上的某個字符。 char charAt(int index):返回指定索引處的char值。 1.3 根據字符獲取該字符在字符串的位置。 int indexOf(String str):返回的是str在字符串中第一次出現的位置。 int indexOf(int ch,intfromIndex):從fromIndex指定位置開始,獲取ch在字符串中出現的位置。 int lastIndexOf(int ch):反向索引一個字符出現的位置
2、判斷:
2.1 字符串中是否包含某一個子串。 boolean contains(str); 特殊之處:indexOf(str):可以索引str第一次出現的位置,如果返回-1表示該str不在字符串中存在。 所以,也可以用於對指定判斷是否包含。 if(str.indexOf("aa")!=-1) 而且該方法既可以判斷,又可以獲取出現的位置 2.2 字符中是否有內容。 boolean isEmpty():原理就是判斷長度是否為0.2.3 字符串是否是以指定內容開頭。 boolean startsWith(str); 2.4 字符串是否是以指定內容結尾。 boolean endsWith(str); 2.5判斷字符串內容是否相同。復寫Object類中的equals方法。 boolean equals(str); 2.6 判斷內容是否相同,並忽略大小寫 boolean equalsIgnoreCase();
3、轉換
3.1 將字符數組轉換成字符串。 構造函數: String(char[]) String(char[],offset,count):將字符數組中的一部分轉換成字符串。 靜態方法: static String copyValueOf(char[]); static String copyvalueOf(char[] data, int offset, int count); 3.2 將字符串轉換成字符數組(重點)。 char[] toCharArray(); 3.3 將字節數組轉換成字符串。 String(byte[]) String(byte[],offset,count):將字節數組中的一部分轉換成字符串。 3.4 將字符串轉換成字節數組 3.5 將基本數據類型轉換成字符串。 String valueOf(int); String valueOf(double);
特殊:字符串和字節數組在轉換過程中是可以指定編碼表的。
4、替換
String replace(oldchar,newchar);
5、切割
String[] split(regex);
6、子串 獲取字符串中的一部分
String substring(begin);
String substring(begin,end);
7、轉換,去除空格,比較
7.1 將字符串轉成大寫或者小寫。 String toUpperCase(); String toLowerCase(); 7.2 將字符串兩端的多個空格去除。 String trim();
7.3 將兩個字符串進行自然順序的比較。
1 public class StringDemo1 { 2 //轉換,去除空格,比較 3 public static void method_7(){ 4 String s="Hello Java"; 5 sop("原字符串為:"+s); 6 sop(s.toUpperCase()); 7 sop(s.toLowerCase()); 8 sop(s.trim()); 9 10 String s1="acc"; 11 String s2="aaa"; 12 sop(s1.compareTo(s2)); 13 } 14 //子串 獲取字符串中的一部分 15 public static void method_sub(){ 16 String s="abcdefghijklmnopqrstuvwxyz"; 17 sop("原字符串為"); 18 sop(s); 19 String s1=s.substring(9); //從指定位置到結尾。如果角標不存在,則會出現字符串角標越界異常。 20 sop("獲取的子串s1為:"); 21 sop(s1); 22 String s2=s.substring(7,20); //包含頭,不包含尾。 獲取整個字符串:s.substring(0,s.length()); 23 sop("獲取的子串s2為:"); 24 sop(s2); 25 } 26 //切割 27 public static void method_split(){ 28 String s="zhangsan,lisi,wangwu"; 29 String[] arr=s.split("a"); 30 sop("原字符串為:"); 31 sop(s); 32 sop("切割後的字符串為:"); 33 for(int x=0;x<arr.length;x++) 34 { 35 System.out.print(arr[x]+" "); 36 } 37 System.out.println(); 38 } 39 //判斷 40 public static void method_is(){ 41 String str="ArrayDemo.java"; 42 String str1="arraydemo.java"; 43 //判斷文件名稱是否以Array開頭 44 sop(str.startsWith("Array")); 45 //判斷文件名稱是否是以.java結尾 46 sop(str.endsWith(".java")); 47 //判斷文件名稱中是否包含Demo 48 sop(str.contains("Demo")); 49 //判斷兩個文件名是否相同(區分大小寫) 50 sop(str.equals(str1)); 51 //判斷兩個文件名是否相同(不區分大小寫) 52 sop(str.equalsIgnoreCase(str1)); 53 } 54 //獲取 55 public static void method_get(){ 56 String str="abcdeakpf"; 57 sop("字符串為:"+str); 58 //長度 59 sop("字符串的長度為:"+str.length()); 60 //根據索引獲取字符 61 sop("角標為四的位置上的字符為:"+str.charAt(4));//當訪問到字符串中不存在的角標時,會發生 StringIndexOutOfBoundsException異常 62 //根據字符獲取索引 63 sop("從角標為3的位置開始往後索引 a 出現的位置為:"+str.indexOf(‘a‘,3));//如果沒有找到返回-1 64 //反向索引一個字符出現的位置 65 sop("從字符串右面開始索引第一個a出現的位置為:"+str.lastIndexOf("a")); 66 } 67 //轉換 68 public static void method_trans(){ 69 char[] arr={‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘}; 70 String str="jkasdhavsgjv"; 71 char[] a=str.toCharArray(); 72 //字符串操作 73 System.out.print("將字符串轉換為字符數組為:["); 74 for(int x=0;x<a.length;x++) 75 { 76 if(x<a.length-1) 77 System.out.print(a[x]+","); 78 else 79 System.out.print("]"); 80 } 81 System.out.println(); 82 //字符數組操作 83 System.out.print("字符數組為:["); 84 for(int x=0;x<arr.length;x++) 85 { 86 if(x<arr.length-1) 87 System.out.print(arr[x]+","); 88 else 89 System.out.print("]"); 90 } 91 System.out.println(); 92 String s=new String(arr); 93 sop("轉換成字符串為:"+s); 94 //獲取從角標為1的位置的字符開始三個字符 95 String s1=new String(arr,1,3); 96 sop("從角標為1的位置的字符開始三個字符組成的字符串為:"+s1); 97 } 98 //替換 99 public static void method_replace(){ 100 101 String s=" hello java "; 102 103 String s1=s.replace(‘a‘, ‘n‘); //如果要替換的字符不存在,則返回的還是原字符串 104 105 sop("原來的字符串為:"+s); 106 107 sop("替換字符後的字符串為:"+s1); 108 109 } 110 //主函數 111 public static void main(String[] args) { 112 method_get(); 113 method_is(); 114 method_trans(); 115 method_replace(); 116 method_split(); 117 method_sub(); 118 method_7(); 119 } 120 public static void sop(Object obj){ 121 System.out.println(obj); 122 } 123 }
References:
[1] http://www.iteye.com/problems/8342, Java字符串解析;
[2] http://blog.csdn.net/u012369373/article/details/49894551, JAVA中String字符串的各種基本操作.
Java中對String字符串的常用操作