我有一个由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。
答案 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 );
}
}
}