public class f {
public static void main(String [] args)
{
String text = "To be or not to be, that is the question.";
String delimiters = "[, .]"; //这里[和]起到什么作用?
int [] limits = {0,-1}; //这个int数组,第二个-1有什么用,是不是会计算 *To之前的一位?T是0,那么T之前应该是-1吧。还是怎么理解??
for(int limit : limits)
{
System.out.println("\nAnalysis with limit = " +limit);
String [] tokens = text.split(delimiters,limit);
System.out.println("Number of tokens: " +tokens.length);
for(String token : tokens)
{
System.out.println(token);
}
}
}
}stringtokenclassjava
public static void main(String [] args)
{
String text = "To be or not to be, that is the question.";
String delimiters = "[, .]"; //这里[和]起到什么作用?
int [] limits = {0,-1}; //这个int数组,第二个-1有什么用,是不是会计算 *To之前的一位?T是0,那么T之前应该是-1吧。还是怎么理解??
for(int limit : limits)
{
System.out.println("\nAnalysis with limit = " +limit);
String [] tokens = text.split(delimiters,limit);
System.out.println("Number of tokens: " +tokens.length);
for(String token : tokens)
{
System.out.println(token);
}
}
}
}stringtokenclassjava
int limit)根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。 limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。 例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果: Regex Limit 结果
: 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" } 调用此方法的 str.split(regex, n) 形式与以下表达式产生的结果完全相同: Pattern.compile(regex).split(str, n) 参数:
regex - 定界正则表达式
limit - 结果阈值,如上所述
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
你如果知道“,”、“ ”(空格)、“.”的作用那么你就应该知道“[”、“]”的作用。
只不过是text中没有“[”、“]”的字符出现而已。
是正则表达式的字符类,表示的是可以匹配“,”、“ ”(空格)“.”
并非楼上所说,其实他是正则表达式的一种运用[/color]
http://blog.csdn.net/kiritor/article/details/8723164
回答你的下一个问题
limit
可选项。该值用来限制返回数组中的元素个数(也就是最多分割成几个数组元素,只有为正数时有影响如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。
int [] limits = {0,-1}; //这个int数组,第二个-1有什么用,是不是会计算 *To之前的一位?T是0,那么T之前应该是-1吧。还是怎么理解??归结为的话就是一个问题
public String[] split(String regex, int limit)的使用
这个split表示的事,按照regex(正则表达式)的方法连切割字符串数组,limit表示一些限制首先,理解第一个参数。regex是个字符串,简单的理解就是,找到这个字符串regex,将传入的字符串切割成多个字符串数组。
仅仅按照字符串来切割范围太小例如文中你只能一次切割“.”或者“,”。切割那条语句就需要两次。如果我想一次性按照“.”或者“,”切割呢?
这时候就引入“正则表达式”,regex英文的意思就是正则表达式,按照我的理解正则表达式实际上就是一个规则表现的文字。
[, .]表示的事,或者. 。再举例子:[abc]表示 a、b 或 c 。这里的[]就是告诉正则表达式的一些表现规则
这里有个简单的方法:split public String[] split(String regex)你可以拿来理解下正则表达式的切割。然后,第二个参数limit。原本就是翻译限制的意思。事实上就是用个int类型来表示不同的模式。
分为三种情况:
(1)当limt>1时,表示最多切割 limt次。
String [] tokens = text.split(delimiters,limit);
tokens的值就是"To be or not to be"和" that is the question."
末尾的"."还存在。最多切割一次。
(2)limt=0
尽可能的切割多次,但是丢弃空字符串。
String [] tokens = text.split(delimiters,limit);
tokens的值就是"To be or not to be"和" that is the question"
末尾的"."被切割(3)limt<0
尽可能的切割多次,同时包含空字符串。
String [] tokens = text.split(delimiters,limit);
tokens的值就是"To be or not to be"和" that is the question"和""
希望我能说的明白。