Java 特定位置的零件串(#17.和#5.)
我有以下gps位置字符串Java 特定位置的零件串(#17.和#5.),java,regex,Java,Regex,我有以下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.0
#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}.[\d]{6},E,[\d]{2}.[\d]{6},N,[\d]{1}.[\d]{2},[\d]{1}.[\d]{2}#[\d]{6}#[\d]{6})
您可以使用此正则表达式:
(?=#\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个数字,然后是一个点 你试过什么吗?它是什么语言?@ThomasAyoub在这里用javalooky:你的正则表达式可能有点像:“(#d+.\d+,E,\d+.\d+,N,\d+.\d+,\d+.\d+.\d+.”如果你不需要\010104\004500
部分,你应该在
上使用拆分,谢谢你的回答。它适用于问题中的示例,但如果我有以下字符串“#114.034407,E,22.648272,N,0.00,0.00#010104#004500#114.034407,E,22.648272,N,0.00,0.00#010104#004500”,我得到的数组包含3个字符串,其中第一个字符串为空(无值)。有没有可能修复正则表达式来调整大小写?@water我无法重现您的问题。也许您应该尝试使用Ideone来共享或手动删除数组的空值。