Java String字元串分割詳解:StringTokenizer、String.split()、String.subString()
1. StringTokenizer
StringTokenizer用法示例:
String str = "I am a great student!";
StringTokenizer st = new StringTokenizer(str);
while (st.hasMoreElements()){
System.out.println(st.nextElement());
}
輸出結果:
I
am
a
great
student!
StringTokenizer有四個常用的函數:
- hasMoreElements()和hasMoreTokens()。這兩個方法用法一樣,功能也一樣,表示StringTokenizer是否還有元素,當其為False,表示StringTokenzier為空。
- nextElement()和nextToken()。這兩個方法的用法是一樣的,傳回此 StringTokenizer 的下一個标記。
StringTokenizer有三個構造函數:
-
StringTokenizer(String str)。預設以” \t\n\r\f”(前有一個空格,引号不是)為分割符。該方法預設以空格回車換行等為分隔符,常用于語句單詞切割。
源碼:
public StringTokenizer(String str) {
this(str, " \t\n\r\f", false);
}
示例如1小節所示。
-
StringTokenizer(String str, String delim)。指定delim為分割符。
源碼:
public StringTokenizer(String str, String delim) {
this(str, delim, false);
}
示例:
String str = "IaaloveaaChina!";
StringTokenizer st = new StringTokenizer(str,"aa");
while (st.hasMoreElements()){
System.out.println(st.nextElement());
}
輸出:
I
love
Chin
!
注意輸出結果!!!
-
StringTokenizer(String str, String delim, boolean returnDelims)。returnDelims為true的話則delim分割符也被視為标記。
源碼:
public StringTokenizer(String str, String delim, boolean returnDelims) {
currentPosition = 0;
newPosition = -1;
delimsChanged = false;
this.str = str;
maxPosition = str.length();
delimiters = delim;
retDelims = returnDelims;
setMaxDelimCodePoint();
}
示例:
String str = "IaloveaChina!";
StringTokenizer st = new StringTokenizer(str,"a",true);
while (st.hasMoreElements()){
System.out.println(st.nextElement());
}
輸出:
I
a
love
a
Chin
a
!
2. String.split()
在java.lang包中有String.split()方法,傳回是一個數組。
split()用法示例:
String str = "IaloveaChina!";
String[] splitStr = str.split("a");
for (String tempStr: splitStr) {
System.out.println(tempStr);
}
輸出:
I
love
Chin
!
注意:
(1)由于“.”和“|”都是轉義字元,是以使用時必須得加"\"。如:
String.split("\."),這樣才能正确的分隔開,不能用String.split(".");
String.split("\|"),這樣才能正确的分隔開,不能用String.split("|");
(2)如果在一個字元串中有多個分隔符,可以用“|”作為連字元,比如:“acount=? and uu =? or n=?”,把三個都分隔出來,可以用
String.split(“and|or”);
String.split()提供三種構造函數:
-
public String[] split(String str)。将str作為分割符進行分割,注意,此處str是String類型而不是char,也就是分隔符可以是一個字元串**(不同于StringTokenizer)**。
示例:
String str = "IaaloveaaChina!";
String[] splitStr = str.split("aa");
for (String tempStr: splitStr) {
System.out.println(tempStr);
}
輸出:
I
love
China!
-
public String[] split(String regex,int limit)。根據比對給定的正規表達式來拆分此字元串。
此方法傳回的數組包含此字元串的每個子字元串,這些子字元串由另一個比對給定的表達式的子字元串終止或由字元串結束來終止。數組中的子字元串按它們在此字元串中的順序排列。如果表達式不比對輸入的任何部分,則結果數組隻具有一個元素,即此字元串。
-
public string[] split(string regex)
這裡的參數的名稱是 regex ,也就是 regular expression (正規表達式)。這個參數并不是一個簡單的分割用的字元,而是一個正規表達式。
3. String.subString()
String.subString()嚴格來說并不是字元串切割,因為它沒有分割符。String.subString()用于傳回指定index的子字元串。
String.subString()有兩個構造函數:
-
單參數形式:substring(int beginIndex)。該子字元串從beginIndex處的字元開始,直到此字元串末尾。
示例:
String str = "IloveChina!";
String newStr = "";
newStr = str.substring(5);
System.out.println(newStr);
輸出:
China!
- 雙參數形式:substring(int beginIndex, int endIndex)該子字元串從指定的 beginIndex 處開始,直到索引 endIndex – 1 處的字元。注意:其它一些語言第二個參數往往代表長度,JAVA不一樣。該子字元串的長度為 endIndex-beginIndex。
示例:
String str = "IloveChina!";
String newStr = "";
newStr = str.substring(1,5);
System.out.println(newStr);
輸出:
love