黑马程序员技术交流社区

标题: 字符串分割问题 [打印本页]

作者: 821728010    时间: 2013-5-28 23:32
标题: 字符串分割问题
本帖最后由 821728010 于 2013-5-29 17:35 编辑

           字符创怎么分隔不开?


public class Demo12 {
        
        public static void main(String[] args) {
                method("haha,kkk.abcd");
}
        
        
static void method(String str){
               
                String[] str1 = str.split(".");
               
                for(String s:str1){
                        System.out.println(s);
                }
               

        }
}
作者: 神之梦    时间: 2013-5-28 23:36
本帖最后由 神之梦 于 2013-5-28 23:58 编辑

楼下已经说了,具体什么原因我确实不知道,只是给楼主试了下代码,如果split(“.”)里面是点的话,确实分割不出,如果是分号或者其他则可以。

作者: shiweiCao    时间: 2013-5-28 23:52
亲,在java中,"."(点)是具有特殊意义的. 所以不能这样分割.你可以用转义字符转义试试看,具体行不行我也没记太清楚,我eclipse这会刚好出问题了
split方法 切割       
声明: public String[] split(String s)
作用:  将字符串按照s进行切割,切割后的每一部分做为String数组的一个元素。
(在使用时注意正则的问题) 你的这个点是正则表达式中的一个特殊字符.
作者: 821728010    时间: 2013-5-28 23:56
shiweiCao 发表于 2013-5-28 23:52
亲,在java中,"."(点)是具有特殊意义的. 所以不能这样分割.你可以用转义字符转义试试看,具体行不行我也没记 ...

呃呃呃懂了    谢谢   
作者: Changer_s    时间: 2013-5-28 23:57
String str= "haha kkk abcd";
         String[] s = new String[3];        //定义接受数组长度   , String[] s =null试了一下,也可以!
         s = str.split(" ");
         for (String string : s) {
                         System.out.println(string);
                 }

切割符:.  的问题
你用空格完全可以
作者: lingziye2011    时间: 2013-5-29 00:15
这牵扯到正则表达式。在正则表达式里。“。”代表任意字符,意思就是你现在相当于用任意字符对字符串分割。应该用“\\.”才对
作者: Changer_s    时间: 2013-5-29 00:24
跟楼上一样,api的原文解释如下:

split
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的

. 任何字符(与行结束符可能匹配也可能不匹配)

作者: Changer_s    时间: 2013-5-29 00:26
lingziye2011 发表于 2013-5-29 00:15
这牵扯到正则表达式。在正则表达式里。“。”代表任意字符,意思就是你现在相当于用任意字符对字符串分割。 ...

String words = "我\\.是\\.谁\\.我";
            String[] print = new String[5];
            print = words.split("\\.");
            for (String string : print) {
                        System.out.println(string);
                }
打印结果是这样的:
我\
是\
谁\


怎么回事?

作者: lingziye2011    时间: 2013-5-29 00:39
String words = "我.是.谁.我";
            String[] print = new String[5];
            print = words.split("\\.");
            for (String string : print) {
                        System.out.println(string);
                }
这样就对了,想在一行就把println后的ln去掉
作者: shiweiCao    时间: 2013-5-29 01:37
821728010 发表于 2013-5-28 23:56
呃呃呃懂了    谢谢

不客气. 一起加油.
作者: Changer_s    时间: 2013-5-29 10:14
lingziye2011 发表于 2013-5-29 00:39
String words = "我.是.谁.我";
            String[] print = new String[5];
            print = words. ...

ok勒!呵呵,谢啦




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