根据字符分解字符串

时间:2016-04-15 02:35:40

标签: java algorithm for-loop

我有一个由x和y坐标列表组成的字符串。 x和y坐标用逗号分隔,每个坐标以指示坐标结尾的点结束。我需要打破这个字符串以获得每个x和y坐标,但我无法让我的for循环正常工作

例如:

String coords= "3,1.2,0.1,1.0,2.1,3.2,3.3,3.";

每个逗号分隔x和y坐标。点(。)结束坐标并开始一个新坐标。所以实际坐标列表看起来像这样。

  
      
  • X:3,Y:1
  •   
  • X:2,Y:0
  •   
  • X:1,Y:1
  •   
  • X:0,Y:2
  •   
  • .... ....
  •   
  • .... ....
  •   

这样做的原因很简单,因为我正在研究一个机器人项目并且存在内存问题,所以我不能使用数组作为coords,因此我只能使用一个字符串必须从PC传递到嵌入式系统,需要将其分解为coords。

5 个答案:

答案 0 :(得分:1)

String coords= "3,1.2,0.1,1.0,2.1,3.2,3.3,3.";
for(int i=0; i< coords.length(); i++)
{
    if ( coords.charAt(i) == '.' )
    {
        String s = coords.substring(i);

        System.out.println("X:"+ s.split(",")[0] + " " + "Y:"+s.split(",")[1] );
    }

}

答案 1 :(得分:1)

试试这个。

    String coords= "3,1.2,0.1,1.0,2.1,3.2,3.3,3.";
    for (int i = 0, j = 0; i < coords.length(); i = j + 1) {
        j = coords.indexOf(".", i);
        if (j == -1) break;
        int k = coords.indexOf(",", i);
        int x = Integer.parseInt(coords.substring(i, k));
        int y = Integer.parseInt(coords.substring(k + 1, j));
        System.out.printf("X:%d, Y:%d%n", x, y);
    }

答案 2 :(得分:0)

如果您的目标是获取输出字符串,那么一种方法就是使用字符串replace()方法,

for循环, split() array这样:

String s = "3,12.23,0.1,1.0,2.1,3.2,3.3,3";
s = "X:"+s.replace(",", ",Y:").replace(".", "\nX:");        
System.out.println(s)

输出:

X:3,Y:1
X:2,Y:0
X:1,Y:1
X:0,Y:2
X:1,Y:3
X:2,Y:3
X:3,Y:3

答案 3 :(得分:0)

一种相当简单的方法是使用正则表达式。

Pattern pattern = Pattern.compile("(\\d+),(\\d+)\\.");

Matcher matcher = pattern.matcher(inputString);
while (matcher.find()) {
    int x = Integer.parse(matcher.group(1));
    int y = Integer.parse(matcher.group(2));
    // do whatever you need to do to x and y
}

答案 4 :(得分:0)

使用分割方法(第一次在点之间分割,第二次在逗号之间分割)

public class SplitCoordinates {
    static public void main(String[] args) {
        String s = "3,1.2,0.1,1.0,2.1,3.2,3.3,3";
        for (String s2: s.split("\\.")) {
            String[] s3 = s2.split("\\,");
            int x = Integer.parseInt(s3[0]);
            int y = Integer.parseInt(s3[1]);
            System.out.println( "X:" + x + ",Y:" + y );
        }
    }
}