下午面試兩個(gè)同志, 感覺(jué)現(xiàn)在的同志們是 Spring, Hibernate 很熟悉, 但是 J2SE 反而陌生了.
可以用兩個(gè)方法來(lái)分割字符串為數(shù)組.
1. java.lang.String 的 split() 方法, JDK 1.4 or later
split
public String[] split(String regex,
int limit)
- 根據(jù)匹配給定的正則表達(dá)式來(lái)拆分此字符串。
此方法返回的數(shù)組包含此字符串的每個(gè)子字符串,這些子字符串由另一個(gè)匹配給定的表達(dá)式的子字符串終止或由字符串結(jié)束來(lái)終止。數(shù)組中的子字符串按它們?cè)诖俗址械捻樞蚺帕小H绻磉_(dá)式不匹配輸入的任何部分,則結(jié)果數(shù)組只具有一個(gè)元素,即此字符串。
limit 參數(shù)控制模式應(yīng)用的次數(shù),因此影響結(jié)果數(shù)組的長(zhǎng)度。如果該限制 n 大于 0,則模式將被最多應(yīng)用 n - 1 次,數(shù)組的長(zhǎng)度將不會(huì)大于 n,而且數(shù)組的最后項(xiàng)將包含超出最后匹配的定界符的所有輸入。如果 n 為非正,則模式將被應(yīng)用盡可能多的次數(shù),而且數(shù)組可以是任意長(zhǎng)度。如果 n 為零,則模式將被應(yīng)用盡可能多的次數(shù),數(shù)組可有任何長(zhǎng)度,并且結(jié)尾空字符串將被丟棄。
例如,字符串 "boo:and:foo" 使用這些參數(shù)可生成下列結(jié)果:
Regex
Limit
結(jié)果
:
2
{ "boo", "and:foo" }
:
5
{ "boo", "and", "foo" }
:
-2
{ "boo", "and", "foo" }
o
5
{ "b", "", ":and:f", "", "" }
o
-2
{ "b", "", ":and:f", "", "" }
o
0
{ "b", "", ":and:f" }
這種形式的方法調(diào)用 str.split(regex, n) 產(chǎn)生與以下表達(dá)式完全相同的結(jié)果:
Pattern
.compile
(regex).split
(str, n)
-
-
- 參數(shù):
regex
- 定界正則表達(dá)式
limit
- 結(jié)果閾值,如上所述
- 返回:
- 字符串?dāng)?shù)組,根據(jù)給定正則表達(dá)式的匹配來(lái)拆分此字符串,從而生成此數(shù)組
- 拋出:
PatternSyntaxException
- 如果正則表達(dá)式的語(yǔ)法無(wú)效
- 從以下版本開(kāi)始:
- 1.4
- 另請(qǐng)參見(jiàn):
Pattern
split
public String[] split(String regex)
- 根據(jù)給定的正則表達(dá)式的匹配來(lái)拆分此字符串。
該方法的作用就像是使用給定的表達(dá)式和限制參數(shù) 0 來(lái)調(diào)用兩參數(shù) split
方法。因此,結(jié)果數(shù)組中不包括結(jié)尾空字符串。
例如,字符串 "boo:and:foo" 產(chǎn)生帶有下面這些表達(dá)式的結(jié)果:
Regex
結(jié)果
:
{ "boo", "and", "foo" }
o
{ "b", "", ":and:f" }
-
-
- 參數(shù):
regex
- 定界正則表達(dá)式
- 返回:
- 字符串?dāng)?shù)組,根據(jù)給定正則表達(dá)式的匹配來(lái)拆分此字符串,從而生成此數(shù)組。
- 拋出:
PatternSyntaxException
- 如果正則表達(dá)式的語(yǔ)法無(wú)效
- 從以下版本開(kāi)始:
- 1.4
- 另請(qǐng)參見(jiàn):
Pattern
2. java.util.Tokenizer JDK 1.0 or later
string tokenizer 類(lèi)允許應(yīng)用程序?qū)⒆址纸鉃闃?biāo)記。tokenization 方法比 StreamTokenizer
類(lèi)所使用的方法更簡(jiǎn)單。StringTokenizer
方法不區(qū)分標(biāo)識(shí)符、數(shù)和帶引號(hào)的字符串,它們也不識(shí)別并跳過(guò)注釋。
可以在創(chuàng)建時(shí)指定,也可以根據(jù)每個(gè)標(biāo)記來(lái)指定分隔符(分隔標(biāo)記的字符)集合。
StringTokenizer
的實(shí)例有兩種行為方式,這取決于它在創(chuàng)建時(shí)使用的 returnDelims
標(biāo)志的值是 true
還是 false
:
- 如果標(biāo)志為
false
,則分隔符字符用來(lái)分隔標(biāo)記。標(biāo)記是連續(xù)字符(不是分隔符)的最大序列。
- 如果標(biāo)志為
true
,則認(rèn)為那些分隔符字符本身即為標(biāo)記。因此標(biāo)記要么是一個(gè)分隔符字符,要么是那些連續(xù)字符(不是分隔符)的最大序列。
StringTokenizer 對(duì)象在內(nèi)部維護(hù)字符串中要被標(biāo)記的當(dāng)前位置。某些操作將此當(dāng)前位置移至已處理的字符后。
通過(guò)截取字符串的一個(gè)子串來(lái)返回標(biāo)記,該字符串用于創(chuàng)建 StringTokenizer 對(duì)象。
下面是一個(gè)使用 tokenizer 的實(shí)例。代碼如下:
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
輸出以下字符串:
this
is
a
test
StringTokenizer 是出于兼容性的原因而被保留的遺留類(lèi)(雖然在新代碼中并不鼓勵(lì)使用它)。建議所有尋求此功能的人使用 String 的 split 方法或 java.util.regex 包。
下面的示例闡明了如何使用 String.split 方法將字符串分解為基本標(biāo)記:
String[] result = "this is a test".split("\\s");
for (int x=0; x<result.length; x++)
System.out.println(result[x]);
輸出以下字符串:
this
is
a
test
posted on 2007-08-13 13:23
冬天出走的豬 閱讀(425)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
j2se