java string.split()方法问题

 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]);

        }
    }

结果:

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

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]

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


哈士奇WWW
浏览 725回答 8
8回答

隔江千里

public static void main(String[] args) {String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("|");for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;str.length;&nbsp;i++)&nbsp;{&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str[i]);&nbsp;&nbsp; }}String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("|");&nbsp;这里String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("\|");&nbsp;

PIPIONE

String str[] = "192.168.1.1|192.168.1.2|192.168.1.3|".split("\^");&nbsp;

ABOUTYOU

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

holdtom

|需要转义\|

www说

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

BIG阳

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

明月笑刀无情

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

慕丝7291255

参数提示,split里是正规表达式!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java