Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Java split在结果中返回空格_Java_Regex_Split - Fatal编程技术网

Java split在结果中返回空格

Java split在结果中返回空格,java,regex,split,Java,Regex,Split,我在这个字符串上使用函数“split”: p(80,2) 我只想得到这两个数字,所以我是这样做的: String[] split = msg.msgContent().split("[p(,)]") 正则表达式是正确的(或者至少我认为是正确的),因为它将两个数字拆分并将它们放入向量“split”中,但结果表明该向量的长度为4,前两个位置被空格占据。 事实上,如果我打印每个向量位置,结果如下: Split: 80 2 我已尝试将\\s添加到正则表达式中以匹配空格,但由于我的字符串中没有

我在这个字符串上使用函数“split”:

p(80,2)
我只想得到这两个数字,所以我是这样做的:

String[] split = msg.msgContent().split("[p(,)]")
正则表达式是正确的(或者至少我认为是正确的),因为它将两个数字拆分并将它们放入向量“split”中,但结果表明该向量的长度为4,前两个位置被空格占据。
事实上,如果我打印每个向量位置,结果如下:

Split:


80
2 

我已尝试将\\s添加到正则表达式中以匹配空格,但由于我的字符串中没有空格,因此无法工作

split
接受正则表达式作为参数,这是一个字符类:
[p(,)]

假设您的代码在类中的所有字符上拆分:

“p(80,2)”
将返回一个数组
{”、“80”、“2”}

我知道它不是很漂亮:

List<String> collect = Pattern.compile("[^\\d]+")
                              .splitAsStream(s)
                              .filter(s -> s.length() > 0)
                              .collect(Collectors.toList());
List collect=Pattern.compile([^\\d]+”)
.分流河道(s)
.filter(s->s.length()>0)
.collect(Collectors.toList());

split
接受正则表达式作为参数,这是一个字符类:
[p(,)]

假设您的代码在类中的所有字符上拆分:

“p(80,2)”
将返回一个数组
{”、“80”、“2”}

我知道它不是很漂亮:

List<String> collect = Pattern.compile("[^\\d]+")
                              .splitAsStream(s)
                              .filter(s -> s.length() > 0)
                              .collect(Collectors.toList());
List collect=Pattern.compile([^\\d]+”)
.分流河道(s)
.filter(s->s.length()>0)
.collect(Collectors.toList());

您不需要在此处拆分
split
,只需使用简单的正则表达式从字符串中提取数字即可:

Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(msg.msgContent());
while (m.find()) {
     String number = m.group();
     // add to array
}
请注意,这需要一个正则表达式,并且您传递的正则表达式与您要查找的模式不匹配


您可能需要阅读和的,以了解有关上述解决方案的更多信息。

您不需要在此处拆分
split
,只需使用一个简单的正则表达式从字符串中提取数字:

Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(msg.msgContent());
while (m.find()) {
     String number = m.group();
     // add to array
}
请注意,这需要一个正则表达式,并且您传递的正则表达式与您要查找的模式不匹配


您可能需要阅读和的,以了解有关上述解决方案的更多信息。

由于您在
p
)上进行拆分,字符串的前两个字符将导致拆分。在替换
p
)和
)后,我将在逗号上进行拆分。如下所示:

String x = "p(80,2)";
String [] y = x.replaceAll("[p()]", "").split(",");

由于您在
p
)上进行拆分,字符串的前两个字符将导致拆分。在替换
p
)和
后,我将在逗号上进行拆分。如下所示:

String x = "p(80,2)";
String [] y = x.replaceAll("[p()]", "").split(",");

拆分它并不是您真正需要的,但如果您想使用它,您可以这样做:

"p(80,2)".replace("p(", "").replace(")", "").split(",")
结果与

[80,2]


拆分它并不是您真正需要的,但如果您想使用它,您可以这样做:

"p(80,2)".replace("p(", "").replace(")", "").split(",")
结果与

[80,2]


1.正则表达式对于拆分2不正确。不应使用split@anubhava我应该使用什么来代替拆分?注意:它们不是空格。它们是空字符串。字符串开头和
p
之间有一个空字符串,而
p
之间有一个空字符串(
。“vector”指的是数组。1.正则表达式对于拆分2不正确。不应使用split@anubhava我应该使用什么来代替拆分?注意:它们不是空格。它们是空字符串。字符串开头和
p
之间有一个空字符串,而
p
之间有一个空字符串(
“vector”指的是数组。