Java split在结果中返回空格
我在这个字符串上使用函数“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添加到正则表达式中以匹配空格,但由于我的字符串中没有
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”指的是数组。