黑马程序员技术交流社区

标题: 为什么split()分割字符串失败? [打印本页]

作者: 匡文    时间: 2013-10-25 23:09
标题: 为什么split()分割字符串失败?
本帖最后由 匡文 于 2013-10-26 14:50 编辑
  1. import java.util.Arrays;

  2. public class SplitDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 String s = "abcd.him";
  9.                 String[] strs = s.split(".");
  10.                 System.out.println(Arrays.toString(strs));
  11.         }

  12. }
复制代码
如上所示,用.去分割字符串就分不开,但是如果我换乘用c或者其它字母就可以分割成功,为什么?难道是split()中不支持"."的分割吗?API文档中也没查到相关说明呀。。。

作者: murder_fol    时间: 2013-10-25 23:18
split(String regex)  接收的是一个正则表达式的字符串, 在正则表达式中.代表任意字符, 所以不能切
写成“\\."才是按照.来切割
作者: 黄小贝    时间: 2013-10-25 23:20
转义字符,你值得拥有
  1. package com.yellow.chapteOne;
  2. import java.util.Arrays;

  3. public class SplitDemo {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 String s = "abcd.him";
  10.                 String[] strs = s.split("\\.");
  11.                 System.out.println(Arrays.toString(strs));
  12.         }

  13. }

复制代码

作者: wenbaoxing    时间: 2013-10-26 00:52
就是这个意思:

split(String regex)  接收的是一个正则表达式的字符串, 在正则表达式中.代表任意字符, 所以不能切
写成“\\."才是按照.来切割
  1. 下面有关转义字符的解释,你也看看吧
复制代码

  1.                 //'\'表示转义符号
  2.                 //它和紧跟它的字符共同构成转义字符,例如:“\n”表示换行,“\"”表示符号"等,在字符串中表示'\'要用“\\”
  3.                 //转义字符的出现就是为了避免出现二义性,二义性是在所有的编程语言中都不允许的
  4.                
  5.                 //例如这里打印"A"
  6.                 System.out.println("\"A\"");
  7.                
  8.                 //例如打印一个制表符
  9.                 System.out.println("hello\tjava");
  10.                
  11.                 /*
  12.                  * 其他的一些转义字符还有:
  13.                          \b:退格
  14.                          \\:反斜线
  15.                          \n:换行
  16.                          \r:回车
  17.                          \f:换页
  18.                          \t:制表符
  19.                  */

  20.         }

  21. }
复制代码

作者: 小夕    时间: 2013-10-26 07:16
转义字符,普通字符间的分割时一个空格,用空格分割是两个空格。
作者: 1961993790    时间: 2013-10-26 09:00
这是正确的代码,我都测试过了:
public class SplitDemo {
        public static void main(String[] args) {
                String s = "abcd.him";
                String[] strs = s.split("\\.");
                for (int i = 0; i < strs.length; i++) {
                        System.out.println(strs[i]);
                }
        }
}
下面是一些我的总结:
在java.lang包中有String.split()方法,返回是一个数组
我在应用中用到一些,给大家总结一下,仅供大家参考:
1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");

希望对楼主有帮助。




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