目錄
1、字符與字符串
很多編程語言都會用字符數組描述字符串,Java也有類似概念,String類中有一系列字符相關的操作方法:
序號 | 方法名稱 | 類型 | 描述 |
1 |
public String(char[] value) |
構造 | 將全部的字符數組作爲String的內容 |
2 |
public String(char[] value,intt offset,int count) |
構造 | 將部分字符數組變爲字符串,設置字符數組的開始索引與使用個數 |
3 |
public char charAt(int index) |
普通 | 返回指定索引位置的字符 |
4 |
public char[] toCharArray() |
普通 | 將字符串以字符數組的形式返回 |
【舉例】:字符串與字符數組間的轉換
String str = "hello";
char[] data = str.toCharArray();
for(int x=0;x<data.length;x++){
Log.d("TAG",data[x]+"、");
}
字符串轉換爲字符數組後,可針對其中每一個字符進行操作,比如將小寫字母轉換爲大寫字母:
String str = "helloworld";
char[] data = str.toCharArray();
for(int x=0;x<data.length;x++){
data[x] -=32; //變成大寫
}
Log.d("TAG",new String(data));
Log.d("TAG",new String(data,5,5));
【舉例】:判斷某一字符串是否全部由數字組成:將字符串轉換爲字符數組,便於進行每個字符的判斷其範圍是否在'0'~'9'之間;
public static boolean isNumber(String str){
char[] data = str.toCharArray();
for(int x=0;x<data.length;x++){
if(data[x]<'0' || data[x]>'9'){
return false;
}
}
return true;
}
2、字節與字符串
字節與字符串的轉換,在實際開發中較多,以下幾個方法:
序號 | 方法名稱 | 類型 | 描述 |
1 |
public String(byte[] bytes) |
構造 | 將全部的字節數組變爲字符串 |
2 |
public String(byte[] bytes,intt offset,int count) |
構造 | 將部分字節數組變爲字符串,設置字節數組的開始索引與使用個數 |
3 |
public byte[] getBytes() |
普通 | 將字符串變爲字節數組 |
4 | public byte[] getBytes(String charsetName) throws UnsupportedEncodingException | 普通 | 編碼轉換 |
【舉例】:利用字節數組實現小寫字母變換爲大寫字母
String str = "hello";
byte[] data = str.getBytes();
for(int x=0;x<data.length;x++){
data[x] -=32;
}
System.out.println(new String(data));
以上代碼只是針對字節的簡單操作,實際開發中字節的使用通常結合IO、網絡進行的。
3、字符串比較
由前面幾個博文可知,字符串比較方法有equals方法,此方法是區分大小寫的比較,Java中針對字符串比較的方法有:
序號 | 方法名稱 | 類型 | 描述 |
1 | public boolean equals(Object anObject) | 普通 | 區分大小寫的字符串比較(是否相等) |
2 | public boolean equalsIgnoreCase(String anotherString) | 普通 | 不區分大小的字符串比較(是否相等)可用於驗證碼 |
3 | public int compareTo(String anotherString) | 普通 | 比較字符串大小 |
4 | public int compareToIgnoreCase(String str) | 普通 | 不區分大小的比較字符串大小 |
compareTo方法最爲重要,如 A.compareTo(B)返回結果有三種:
- >0: 字符串A>B;
- <0:字符串A<B;
- =0:字符串A=B;
應用比較簡單,不再舉例嘍。
4、字符串查找
從一個完整的字符串中查找子字符串,有以下方法:
序號 | 方法名稱 | 類型 | 描述 |
1 | public boolean contains(CharSequence s) | 普通 | 判斷某一個字符串是否存在 |
2 | public int indexOf(String str) | 普通 | 取得某一個字符串的索引位置,找不到返回-1 |
3 | public int indexOf(String str,int fromIndex) | 普通 | 從指定索引位置開始檢索子字符串位置,找不到就返回-1 |
4 | public int lastIndexOf(String str) | 普通 | 從後向前查找指定字符串,找不到返回-1 |
5 | public int lastIndexOf(String str,int fromIndex) | 普通 | 從指定位置,由後向前查找指定字符串,找不到返回-1 |
6 | public boolean startsWith(String prefix) | 普通 | 判斷是否以某個字符串開頭 |
7 | public boolean startsWith(String prefix, int toffset) | 普通 | 從指定位置判斷是否以某個字符串開頭 |
8 | public boolean endsWith(String suffix) | 普通 | 是否以某個字符串結尾 |
要查找中間的內容,基本都是使用contains()方法,但是它只能查找,不能判斷位置,JDK1.5以後出現的方法,1.5之前只能用indexOf()方法。
startsWith()方法、endsWith()方法在開發中比較實用。
5、字符串截取
將完整字符串 截取子字符串,方法如下:
序號 | 方法名稱 | 類型 | 描述 |
1 | public String substring(int beginIndex) | 普通 | 從指定索引位置(包含該位置的字符)截取至末尾 |
2 | public String substring(int beginIndex, int endIndex) | 普通 | 截取指定索引範圍內的字符串(包含起始索引,不包含end索引) |
實際開發這種截取操作很常用,比較簡單,不再舉例贅述了。
6、字符串替換
將指定字符串替換爲其他內容,如下方法:
序號 | 方法名稱 | 類型 | 描述 |
1 | public String replaceAll(String regex,String replacement) | 普通 | 字符串的全部替換 |
2 | public String replaceFirst(String regex,String replacement) | 普通 | 替換第一個內容 |
【舉例】:觀察替換操作
String str = "hello";
System.out.println(str.replaceAll("l","L"));//輸出heLLo
System.out.println(str.replaceFirst("l","L"));//輸出heLlo
實際開發中,利用替換操作可以消除數據中的全部空格:
String str = "h e llo";
System.out.println(str.replaceAll(" ",""));//輸出hello
7、字符串拆分
將完整字符串根據指定內容進行拆分,拆分後的結果爲字符串數組,方法如下:
序號 | 方法名稱 | 類型 | 描述 |
1 | public String[] split(String regex) | 普通 | 全部拆分 |
2 | public String[] split(String regex,int limit) | 普通 | 部分拆分 |
【舉例】:觀察全部拆分
String str = "hello world";
String[] data = str.split(" ");
for (int i=0;i<data.length;i++){
System.out.println(data[i]);
}
【舉例】:觀察部分拆分
String str = "hello world nice china";
String[] data = str.split(" ",2);
for (int i=0;i<data.length;i++){
System.out.println(data[i]);
}
【舉例】:拆分IP地址
String str = "192.168.1.1";
String[] data = str.split(".");
for (int i=0;i<data.length;i++){
System.out.println(data[i]);
}
可以發現,按“.”拆分無結果返回,不能直接按"."拆分,因爲其屬於正則表達式的範疇。所以,需要進行轉義,使用"\\"。
String str = "192.168.1.1";
String[] data = str.split("\\.");
for (int i=0;i<data.length;i++){
System.out.println(data[i]);
}
8、其他操作方法
除以上方法外,還有一些小的操作方法:
序號 | 方法名稱 | 類型 | 描述 |
1 | public int length() | 普通 |
取得字符串的長度(中英文長度一致,方便開發) 注意,String中使用的是方法,數組中使用的是屬性 |
2 | public boolean isEmpty() | 普通 | 判斷是否爲空(""),若是返回true,否則返回false |
3 | public String toUpperCase() | 普通 | 針對字母,轉大寫 |
4 | public String toLowerCase() | 普通 | 針對字母,轉小寫 |
5 | public String trim() | 普通 | 去掉左右空格,不去中間字符 |
6 | public String concat(String str) | 普通 | 字符串的連接(基本不會使用,與+相同) |
【舉例】:觀察trim
String str = " h ello ";
System.out.println(str.trim());
【舉例】很遺憾,String類中沒有提供initcap()函數的功能,用於首字母大寫,開發中很常用,我們自己實現
public static String initCap(String str){
if(str==null || str.length()==0){
return str;
}
return str.substring(0,1).toUpperCase()+str.substring(1);
}