![](/img/trans.png)
[英]How to split string with white spaces and include white spaces as elements in the result?multiple white spaces splitting
[英]Java split returns white spaces in result
我在此字符串上使用函数“ split”:
p(80,2)
我只想获得两个数字,所以我要做的是:
String[] split = msg.msgContent().split("[p(,)]")
正则表达式是正确的(或者至少我是这样认为的),因为它会将两个数字分开并将它们放入向量“ split”中,但是事实证明该向量的长度为4,并且前两个位置被占用空白。
实际上,如果我打印每个矢量位置,则结果如下:
Split:
80
2
我曾尝试在正则表达式中添加\\\\ s以与空格匹配,但是由于我的字符串中没有空格,因此无法正常工作。
您无需在此处split
,只需使用简单的正则表达式从字符串中提取数字即可:
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(msg.msgContent());
while (m.find()) {
String number = m.group();
// add to array
}
请注意, String#split
需要一个正则表达式,而您传递的正则表达式与您要查找的模式不匹配。
split
接受一个正则表达式作为参数,这是一个字符类: [p(,)]
。
鉴于您的代码将拆分该类中的所有字符:
"p(80,2)"
将返回一个数组{"", "80", "2"}
我知道不是很漂亮:
List<String> collect = Pattern.compile("[^\\d]+")
.splitAsStream(s)
.filter(s -> s.length() > 0)
.collect(Collectors.toList());
由于您要在p
和(
上进行拆分,因此字符串的前两个字符会导致拆分。在替换p
, (
和)
之后,我将在逗号上进行拆分。
String x = "p(80,2)";
String [] y = x.replaceAll("[p()]", "").split(",");
拆分实际上并不是您真正需要的,但是如果您想使用它,可以执行以下操作:
"p(80,2)".replace("p(", "").replace(")", "").split(",")
结果与
[80,2]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.