我遇到一些问题需要找到一种转换字符串的方法,它表示几何Linestring。坐标显示在(Lon,Lat),我想转换(Lat,Lon).. 例如:
LINESTRING (0 1, 3 2 , 4 5)
到
LINESTRING (1 0, 2 3 , 5 4 )
是否可以使用正则表达式? 感谢
答案 0 :(得分:3)
如果没有大量使用正则表达式,您可以实现以下相同。我自己对正则表达式了解不多,因此提出了一个简单的解决方案......
考虑到坐标,您可以执行以下操作: -
String a = "0 1, 3 2 , 4 5";
String b[] = a.split(",");
String c[] = new String[b.length];
for (i = 0; i < b.length; b++) {
c[i] = new StringBuilder(b[i]).reverse().toString();
}
String new = c[0] + "," + c[1] + "," + c[2];
答案 1 :(得分:2)
如果您想切换两个以空格分隔的数字,可以使用replaceAll(regex, replacement)
进行切换
表示由空格分隔的两个数字的regex
看起来像(\\d+) (\\d+)
\\d
代表一位数字(字符0
,1
... 9
)\\d+
表示来自一个或多个数字的字符串构建(\\d+)
会将\\d+
的匹配放入群组中,以便我们稍后重复使用现在因为每个号码都在单独的groups中,我们可以replacement
通过$x
使用x
代表组号的这些组中的匹配,所以在这种情况下我们可以在第1组比赛前将第2组的比赛放入。
演示:
String text = "LINESTRING (0 1, 3 2 , 4 5)";
System.out.println("before replacing: "+text);
text = text.replaceAll("(\\d+) (\\d+)", "$2 $1");
System.out.println("after replacing: "+text);
输出:
before replacing: LINESTRING (0 1, 3 2 , 4 5)
after replacing: LINESTRING (1 0, 2 3 , 5 4)