繁体   English   中英

正则表达式:从字符串中提取浮点数据并将其分组

[英]Regex: extract float data from String and group it

我有一个像这样的字符串:

288.999,224.004 283.665,258.338 313.332,293.005 312.332,336.671 270.999,389.338 371.998,412.338 

我尝试将数据解析为浮点值,但我想对它进行排序! 逗号前的值应为我的x值,逗号后的值应为y值。

Pattern p = Pattern.compile("[0-9]+.[0-9]*");
Matcher m = p.matcher(pointString);
while(m.find())
{
   System.out.print("x:"+m.group(0)); //x- Values
  // System.out.print("y:"+m.group(1)); //y- Values
}

这段代码只创建了一个组...我应该如何更改我的String模式以使用y-Values获得第二个组...

首选结果:

x:288.999
y:224.004 
x:283.665
y:258.338 
....

保持简单, 分割就足够了:

String input = "288.999,224.004 283.665,258.338 313.332,293.005 312.332,336.671 270.999,389.338 371.998,412.338";

String[] points = input.split(" ");
for (String point : points) {
  String[] coordinates = point.split(",");
  System.out.println("x:" + coordinates[0]);
  System.out.println("y:" + coordinates[1]);
}

您正在寻找的模式:

((?:\\d*\\.\\d+)|(?:\\d+\\.\\d*)) *, *((?:\\d*\\.\\d+)|(?:\\d+\\.\\d*))

同样,group(0)将带来整个比赛,您宁愿在寻找group(1)和group(2)

这会起作用

 String str = "288.999,224.004 283.665,258.338 313.332,293.005 312.332,336.671 270.999,389.338 371.998,412.338";
    String[] points=str.split(" ");
    String[] point=new String[2];
    for(int i=0;i<points.length;i++){
        point=points[i].split(",");
        System.out.println("X-val: "+point[0]);
        System.out.println("Y-val: "+point[1]);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM