我有以下 gps 位置字符串
#114.034407,E,22.648272,N,0.00,0.00#010104#004500#17.034407,E,22.648272,N,0.00,0.00#010104#004500#5.034407,E,22.648272,N,0.00,0.00#010104#004500
我想把它分成经度位置 (#17.,#5.)。所有经度位置都以#
开始,包含.
点在第一个或第一个和第二个或第一个、第二个和第三个之后。我怎样才能用正则表达式得到这个结果?
结果:
#114.034407,E,22.648272,N,0.00,0.00#010104#004500
#17.034407,E,22.648272,N,0.00,0.00#010104#004500
#5.034407,E,22.648272,N,0.00,0.00#010104#004500
代码
Pattern pattern = Pattern.compile("regular expression");
Matcher matcher = pattern.matcher(gpsPacket);
matcher.matches();
最佳答案
你可以使用这个正则表达式:
(?=#\d{1,3}\.)
使用此代码:
import java.util.*;
import java.lang.*;
import java.io.*;
class YourClass
{
public static void main (String[] args) throws java.lang.Exception
{
String str = "#114.034407,E,22.648272,N,0.00,0.00#010104#004500#17.034407,E,22.648272,N,0.00,0.00#010104#004500#5.034407,E,22.648272,N,0.00,0.00#010104#004500";
String delimiters = "(?=#\\d{1,3}\\.)";
String[] coordinates = str.split(delimiters);
for(String coordinate : coordinates) {
System.out.println(coordinate);
}
}
}
它会将字符串拆分为 #
,后跟 1 到 3 数字,然后是一个点。 Live demo
关于java - 特定位置的部分字符串(#17。和#5。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39788957/