关于split,看看有没有人懂,呵呵 stringsplit 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 . 是java正则中的预定义字符表示 任何字符(与行结束符可能匹配也可能不匹配) 所以 此处需要添加转义字符根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。 String stringAb = new String("a.b"); String[] strings = stringAb.split("\\."); System.out.println(strings[0]); 时刻记得split参数是正则String strings[] = str.split("[.]"); 还真忘记这里是 regex参数了 方法是对的。但是原因解释的不够深入,看的书吧?正则是知道的,为了回答严谨就去jdk里面印证了下。 方法是对的。但是原因解释的不够深入,看的书吧?正则是知道的,为了回答严谨就去jdk里面印证了下。你这个回答还是比较深入一些的;不是仅仅说怎么样可以;理论上看;单独一个点“.”有二义性,需要转义;所以需要"\."但是呢,“\.”会被当做一个转义过的字符;而java又没有这个“\.”转义符,所以需要二次转义,告诉java要把"\."当做普通字符对待;于是,就有了“\\.”---双斜杠点;这样java在处理的时候,会把split的参数,提取为“\.”,也就是说,实际上,split的参数是"\,";然后java根据“\.”,来进行匹配;后面的等会再说。 可以参考 java.util.regex Class Pattern 这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。 其实看API只是知道答案,跟知道为什么还差很远的。 个人觉得这是JDK更新后的缺陷 一开始这个方法是不支持正则的 后来支持了之后 没有提供一个方法或者一个参数关闭匹配 很多时候 是不需要正则的 这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。它还真就是个正则表达式 这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。 public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); } 这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。它还真就是个正则表达式唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗? 这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。 public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); }仅仅是一个普通字符,不要把它想得那么神秘;看源码,看到这里,还差一段距离。 这个思路有道理;如果是两个参数这样子split(,boolean switchRegx,String s);这也好用。 这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。它还真就是个正则表达式唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了看来你认为的正则表达式就是要有.*+^这之类的才叫正则。 这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。它还真就是个正则表达式唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了看来你认为的正则表达式就是要有.*+^这之类的才叫正则。这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。它还真就是个正则表达式唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了看来你认为的正则表达式就是要有.*+^这之类的才叫正则。不能说,要有那些元字符,而是这个就是一个普通字符,和正则没有一点关系。 参照APIsplitpublic String[] split(String regex, 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 - 如果正则表达式的语法无效从以下版本开始: 1.4 另请参见:Pattern--------------------------------------------------------------------------------splitpublic String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。 例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: Regex 结果 : { "boo", "and", "foo" } o { "b", "", ":and:f" } 参数:regex - 定界正则表达式 返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 抛出: PatternSyntaxException - 如果正则表达式的语法无效从以下版本开始: 1.4 另请参见:Pattern 看API,不如看看源码的实现。因为让人仅仅知道怎么使用的;不知其所以然。API提到最多的是正则。正则,泛滥了。其实,到了SDK内部,实现原理大致如此:1、把split的参数,当做一个普通字符;2、找到这个字符对应的Unicode码,比如句号"."对应的是463、将目标字符串也转换成对应的Unicode码;然后寻找46是否存在目标的Unicode序列中;4、根据找的的结果,生成子串。 这个是正则,不要上当哦...我以前碰过...看api就知道了... split是基于正则表达式分割的小数点是正则表达式中关键字,需要转义split("\\.") java的String日期类型格式转换 java 正则表达式,捕获组重命名怎么搞? 一组对象,根据对象的两个属性分类的问题 JScrollPane滚动刷新 关于Applet小程序(在线等)! 打包时候为何类文件进不去 关于JSP的BEANS的问题。各位请进! 请教JAVA字符比较问题谢谢 有没有一个类是验证一个字符串是否为数值的类啊?(再线等待,答对就结帖给分) 多线程服务器stop问题 请教把map的值放在文字里拼上 有问题,求解下
表示 任何字符(与行结束符可能匹配也可能不匹配)
所以 此处需要添加转义字符根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。
因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。 String stringAb = new String("a.b");
String[] strings = stringAb.split("\\.");
System.out.println(strings[0]);
String strings[] = str.split("[.]");
还真忘记这里是 regex参数了
正则是知道的,为了回答严谨就去jdk里面印证了下。
正则是知道的,为了回答严谨就去jdk里面印证了下。
你这个回答还是比较深入一些的;不是仅仅说怎么样可以;理论上看;单独一个点“.”有二义性,需要转义;所以需要"\."但是呢,“\.”会被当做一个转义过的字符;而java又没有这个“\.”转义符,所以需要二次转义,告诉java要把"\."当做普通字符对待;于是,就有了“\\.”---双斜杠点;这样java在处理的时候,会把split的参数,提取为“\.”,也就是说,实际上,split的参数是"\,";然后java根据“\.”,来进行匹配;后面的等会再说。
它还真就是个正则表达式
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
}
它还真就是个正则表达式
唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
}
仅仅是一个普通字符,不要把它想得那么神秘;看源码,看到这里,还差一段距离。
它还真就是个正则表达式
唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了
看来你认为的正则表达式就是要有.*+^这之类的才叫正则。
它还真就是个正则表达式
唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了
看来你认为的正则表达式就是要有.*+^这之类的才叫正则。这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
它还真就是个正则表达式
唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了
看来你认为的正则表达式就是要有.*+^这之类的才叫正则。
不能说,要有那些元字符,而是这个就是一个普通字符,和正则没有一点关系。
public String[] split(String regex,
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 - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
Pattern--------------------------------------------------------------------------------split
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。 例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: Regex 结果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
参数:
regex - 定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
Pattern
其实,到了SDK内部,实现原理大致如此:
1、把split的参数,当做一个普通字符;
2、找到这个字符对应的Unicode码,比如句号"."对应的是46
3、将目标字符串也转换成对应的Unicode码;然后寻找46是否存在目标的Unicode序列中;
4、根据找的的结果,生成子串。