黑马程序员技术交流社区

标题: String切割的问题 [打印本页]

作者: 路边小色狼    时间: 2013-9-24 22:29
标题: String切割的问题
本帖最后由 路边小色狼 于 2013-9-24 22:47 编辑
  1. public class spilet {
  2. public static void main(String[] args)
  3. {
  4. String a="60.35.45.68";
  5. String[] str=a.split(".");
  6. System.out.println(str.length);
  7. }

  8. }
复制代码
切割完理论是得到String[] str={"60","35","45","68"},没错吧
可是打印出来长度却为0


作者: yting_xmei1129    时间: 2013-9-24 22:42
楼主,你忘记转义符号了,看下面代码--->

public class spilet {
        public static void main(String[] args) {
                String a = "60.35.45.68";
                String[] str = a.split("\\.");   //这里需要加  \\
                System.out.println(str.length);
        }

}

可以得到你想要的结果!

刚看了下 API


预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

. 是正则表达式中的预定义字符了, 所以想要用 . 表示字符串中的 "." 的话,就需要转义了,正则表达式中 为 \. ,java中又需要转义,所以为 \\.
建议楼主多看下 正则表达式中的具体介绍、、、

希望可以帮到楼主、、、

The you smile until forever 、、、、、、、、、、、、、、、、、、、、、
作者: 路边小色狼    时间: 2013-9-24 22:47
yting_xmei1129 发表于 2013-9-24 22:42
楼主,你忘记转义符号了,看下面代码--->

public class spilet {

正解,谢谢了。我也刚找着答案。
作者: 落木萧萧    时间: 2013-9-24 22:50
因为"."是转义符,如果要用"."作为分隔符的话要加上"\\"。
例如:
  1. String.split(".");//这样是错误的。
  2. String.split("\\.");//这样才是正确的写法。
复制代码
PS.类名首字母要大写。
作者: 梁贺    时间: 2013-9-24 22:52
public  String [] split(String regex) 这是split的用法,括号的内容是正则表达式,而“.“在正则表达式中代表任何字符,所以需要对”.“进行转义。最终结果\\.。

作者: 迷你卡卡    时间: 2013-9-24 23:07
转义字符,楼主,其实这个转义字符的问题还是比较容易忽视的,建议楼主,每次在双引号中使用特殊符号的时候都养成习惯考虑下这个问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2