雖然使用正則表達式能很好的進行字符串的解析、提取、替換,但是對于一些簡單的應用,使用
String
類提供的一些方法就可以很好的完成,最突出的就是
split
方法。
split
方法能夠很方便的將字符串按照一定的規則拆分開。
比如對于下面的字符串:
Tom,Jane,Tony,Elva,Gigi
只要調用如下的代碼就可以將各個名字提取出來:
String value = "Tom,Jane,Tony,Elva,Gigi";
String[] names = value.split(",");
for(int i=0,n=names.length;i<n;i++)
{
???? System.out.println(names[i]);
}
運行結果:
Tom
Jane
Tony
Elva
Gigi
?
看到這個運行結果,很多人都認為
split
方法就是按照給定的字符串對字符串進行拆分,知道碰到了下面的問題。
有一個字符串:中國
.
北京
.
海淀
.
學院路。請解析此字符串,并打印輸出“中國
北京
海淀
學院路
”。
于是寫代碼如下:
String value = "
中國
.
北京
.
海淀
.
學院路
";
String[] names = value.split(".");
for(int i=0,n=names.length;i<n;i++)
{
???? System.out.print(names[i]+" ");
}
運行結果:
?
對,沒看錯!沒有任何輸出!
讓我們來看看
split
方法的方法簽名吧:
public String[] split(String regex)
這里的參數的名稱是
regex
,也就是
Regular Expression
(正則表達式)。這個參數并不是一個簡單的分割用的字符,而是一個正則表達式,看了
split
方法的實現代碼就更堅定了我們的信心:
public String[] split(String regex, int limit) {
???? return Pattern.compile(regex).split(this, limit);
}
split
的實現直接調用的
Matcher
類的
split
的方法。讀者已經知道,“
.
”在正則表達式中有特殊的含義,因此我們使用的時候必須進行轉義。
修改代碼如下:
private static void split2()
{
???? String value = "
中國
.
北京
.
海淀
.
學院路
";
???? String[] names = value.split("\\.");
???? for(int i=0,n=names.length;i<n;i++)
???? {
???????? System.out.print(names[i]+" ");
???? }
}
運行結果
:
中國
北京
海淀
學院路