Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么方法String.split()会拆分包含|&引用;出人意料地_String_Split - Fatal编程技术网

为什么方法String.split()会拆分包含|&引用;出人意料地

为什么方法String.split()会拆分包含|&引用;出人意料地,string,split,String,Split,当我想用String.split(“|”)方法拆分字符串“aaaa | bbbbb | 123456”时,结果出乎意料 我的代码: String s = "aaaa|bbbbb|123456"; String[] temp = s.split("|"); for (String str:temp) { System.out.println(str); } 但结果是: a a a a | b b b b b | 1 2 3 4 5 6 char“|”有什么特别之处吗?您需要逃离管道:

当我想用String.split(“|”)方法拆分字符串“aaaa | bbbbb | 123456”时,结果出乎意料

我的代码:

String s = "aaaa|bbbbb|123456";
String[] temp = s.split("|");
for (String str:temp) {
    System.out.println(str);
}
但结果是:

a
a
a
a
|
b
b
b
b
b
|
1
2
3
4
5
6

char“|”有什么特别之处吗?

您需要逃离管道:

String[] temp = s.split("\\|");
管道符号
|
在正则表达式中有特殊含义,用于表示替换。您的原始代码导致每个字符之间发生拆分,这不是您想要的。

使用转义序列

String s="aaaa|bbbbb|123456";
String [] temp=s.split("\\|");
for(String str:temp) {
    System.out.println(str);
}

在Java中,以下字符必须在正则表达式中转义

.[]{}()*+-^$|

您可以在拆分期间对
|
字符进行转义

string.split("\\|");
您还可以使用
StringTokenizer
实现相同的功能,如下所示

字符串测试=“abc.def.123”

要了解有关必须使用正则表达式模式转义的字符列表的更多信息,请查看

Sting split(String regex)方法需要一个正则表达式作为其参数。它会围绕给定正则表达式的匹配项拆分此字符串

前面的反斜杠(\)将元字符转换为文字字符。因为这也是字符串中的Java转义字符,所以需要使用“\”来表示反斜杠字符。要在Java中拆分带有文字“|”字符的字符串

you must use split("\\|")
。比如说,

String s="aaaa|bbbbb|123456";
String [] temp=s.split("\\|");
for(String str:temp) {
    System.out.println(str);
}


尝试使用String.split(“|”)。可能重复的问题我在最初发布后才意识到有一个完全重复的问题,因此我无法结束该问题。
String s="aaaa|bbbbb|123456";
String [] temp=s.split("\\|");
for(String str:temp) {
    System.out.println(str);
}