Java使用正则表达式分割字符串

标签 java string-parsing

我有一个字符串,其内容为ParseGeoPoint[30.132531,31.312511]。如何获取保存在 double 变量中的坐标。即我想要双 lat = 30.132531;double lang = 31.312511;

这是我尝试过的:

String myText = "ParseGeoPoint[30.132531,31.312511]";
String [] latlong= myText.split("["); //it needs an escape character
String [] latlong2= latlong[1].split(",");
Double lat = Double.parseDouble(latlong2[0]);
String[] latlong3= latlong2[1].split("]");//also an escape character is needed here
Double lang = Double.parseDouble(latlong3[0]);

有两件事: 鉴于需要转义字符,如何在方括号上进行拆分? 第二,我觉得这样做太过分了。一定有更简单的方法。它是什么?

最佳答案

How to split on the square bracket given that it needs an escape character?

我猜你的意思是这不能编译:

String [] latlong= myText.split("[");

要使其编译,请转义 [:

String [] latlong= myText.split("\\[");

这是使用正则表达式从字符串中提取 double 的另一种方法:

Pattern pattern = Pattern.compile("ParseGeoPoint\\[([\\d.-]+),([\\d.-]+)]");
Matcher matcher = pattern.matcher(myText);
if (matcher.matches()) {
    lat = Double.parseDouble(matcher.group(1));
    lang = Double.parseDouble(matcher.group(2));
}

另一种方法是使用子字符串:

int bracketStartIndex = myText.indexOf('[');
int commaIndex = myText.indexOf(',');
int bracketEndIndex = myText.indexOf(']');
lat = Double.parseDouble(myText.substring(bracketStartIndex + 1, commaIndex));
lang = Double.parseDouble(myText.substring(commaIndex + 1, bracketEndIndex));

关于Java使用正则表达式分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32916649/

相关文章:

java - 带字符串的 CXF header 元素

java - 如何在 JTextArea 周围设置线条边框?

java - 将 Jetty 与 RESTEasy 集成

android - 解析异常 : Unparseable date: "Wed Mar 30 00:00:00 GMT+05:30 2016" (at offset 4)

c - 用 C 编写一个函数,根据初始字符扫描不同数量的参数

c++ - 为什么 _splitpath_s() 使用自定义大小的字符串缓冲区来返回驱动器号?

java - 为工作使用正确的工具 : embedded programming

php - JSON 解析 : from PHP5 ( which attacks a database: mySQL ) ios5 iphone

python - 从文件生成字符串

java - 实例变量和构造函数?