java string.split()方法问题

[code="java"] public static void main(String[] args) {
String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("|");

        for (int i = 0; i < str.length; i++) {

            System.out.println(str[i]);

        }
    }

[/code]

结果:
[code="java"]

1
9
2
.
1
6
8
.
1
.
1
|
1
9
2
.
1
6
8
.
1
.
2
|
1
9
2
.
1
6
8
.
1
.
3
|

[/code]

[code="java"]
public static void main(String[] args) {
String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".replace("|", "^").split("^");

        for (int i = 0; i < str.length; i++) {

            System.out.println(str[i]);

        }
    }

[/code]
结果:
[code="java"]
192.168.1.1^192.168.1.2^192.168.1.3^
[/code]
[code="java"]
public static void main(String[] args) {
String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".replace("|", ":").split(":");

        for (int i = 0; i < str.length; i++) {

            System.out.println(str[i]);

        }
    }

[/code]
这次结果为想要的结果了:
[code="java"]
192.168.1.1
192.168.1.2
192.168.1.3
[/code]

以上,我以为是因为|,^是位运算符的问题,结果我试了&,<<,<<<结果都正常.
为什么使用 |,^ 会变成那样呢?

[code="java"]

public static void main(String[] args) {

String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("|");

for (int i = 0; i < str.length; i++) {  

    System.out.println(str[i]);  

}  

}

String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("|");
这里
String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("\|");
[/code]

[code="java"]
String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("\^");
[/code]

不好意思,上面那个字符串里没有 ^ 我只是说明用 \^

:D

|需要转义\|

spilt里面接受的是正则表达式

Java的split方法参数是正则表达式regex,仔细看一下说明。而|的表示在正则表达式里需要转移为|,同时为了作为字符串的参数,\又需要进行转义,所以表示为\,所以split的参数改成“\|”就可以实现目的

str.split();参数是正则表达式。 具体参见api。
| 是正则表达式元字符 所以需要转义 改为\|

注意java的\也是需要转义的。

参数提示,split里是正规表达式!!

[code="java"]
public static void main(String[] args) {
String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("[|]");

        for (int i = 0; i < str.length; i++) {

            System.out.println(str[i]);

        }
    }

[/code]

不光是 | 还有 . 都是正则表达式的关键字。 可以先看看正则表达式有那些关键字。以后都加上转义斜杠