Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将项目从字符串中获取到具有模式的数组中_Java_String - Fatal编程技术网

Java 将项目从字符串中获取到具有模式的数组中

Java 将项目从字符串中获取到具有模式的数组中,java,string,Java,String,我有一根弦,上面有很多纬度和经度,就像这样 线串-79.0578544444577 43.0929133770364,-79.0559554404751 43.092999555932,-79.0540564364926 43.09308574015,-79.0504086322343.0931797561892,-79.050328015438 43.0911427096913 我想把坐标从字符串中取出来,放到一个数组中。我知道这可以通过字符串拆分来实现,但我不知道如何编写表达式来从字符串中获

我有一根弦,上面有很多纬度和经度,就像这样

线串-79.0578544444577 43.0929133770364,-79.0559554404751 43.092999555932,-79.0540564364926 43.09308574015,-79.0504086322343.0931797561892,-79.050328015438 43.0911427096913

我想把坐标从字符串中取出来,放到一个数组中。我知道这可以通过字符串拆分来实现,但我不知道如何编写表达式来从字符串中获取坐标


有人能帮我解决这个问题吗

如果LineString是变量的名称,括号内是什么,它的值不包括括号,那么:

String[] coords = LINESTRING.split(" ");

应该有用

如果LineString是变量的名称,括号内的内容是其值(不包括括号),则:

String[] coords = LINESTRING.split(" ");
应该有用

第一个和最后一个之间的子字符串 继续拆分,您将得到字符串[]数组,该数组将包含像-79.0578544444577 43.0929133770364,-79.0559554404751 43.09299955585932,。。。 现在,您可以在该对中的每一对上使用空格进行拆分,以获得另一个字符串[]数组,这次包含-79.0578544444577,43.0929133770364 您还可以使用正则表达式以[可选-][一位或两位][点][多个数字]的形式查找数字。这种模式可能看起来像-?\\d{1,2}[.]\\d+

第一个和最后一个之间的子字符串 继续拆分,您将得到字符串[]数组,该数组将包含像-79.0578544444577 43.0929133770364,-79.0559554404751 43.09299955585932,。。。 现在,您可以在该对中的每一对上使用空格进行拆分,以获得另一个字符串[]数组,这次包含-79.0578544444577,43.0929133770364 您还可以使用正则表达式以[可选-][一位或两位][点][多个数字]的形式查找数字。这种模式可能看起来像-?\\d{1,2}[.]\\d+

尝试以下方法:

String[] coordinates = LINESTRING.split(",*\\s+");
这应该立即按空格和逗号分开。此正则表达式查找零个或多个逗号,然后查找一个或多个空白字符作为分隔符。

请尝试以下操作:

String[] coordinates = LINESTRING.split(",*\\s+");

这应该立即按空格和逗号分开。此正则表达式查找零个或多个逗号,然后查找一个或多个空白字符作为分隔符。

如果您愿意将它们全部放在一个数组中:

String str = "LINESTRING (-79.0578544444577 43.0929133770364, -79.0559554404751 43.0929995585932, -79.0540564364926 43.09308574015, -79.0504086322323 43.0931797561892, -79.0503228015438 43.0911427096913)";
String[] arr = str.split("\\(|\\)")[1].split(",? ");
for (String s: arr)
   System.out.println(a);
拆分\\\\\\表示在或上拆分。那就是{LINESTRING,-79…,}

[1] 因为这个位置包含-79

分裂,?表示拆分,后跟空格或仅空格

如果要成对提取坐标,请执行以下操作:

for (int i = 0; i < arr.length; i += 2)
{
   System.out.println("coordinate 1 = "+arr[i]);
   System.out.println("coordinate 2 = "+arr[i+1]);
}

如果您很高兴将它们都放在一个阵列中:

String str = "LINESTRING (-79.0578544444577 43.0929133770364, -79.0559554404751 43.0929995585932, -79.0540564364926 43.09308574015, -79.0504086322323 43.0931797561892, -79.0503228015438 43.0911427096913)";
String[] arr = str.split("\\(|\\)")[1].split(",? ");
for (String s: arr)
   System.out.println(a);
拆分\\\\\\表示在或上拆分。那就是{LINESTRING,-79…,}

[1] 因为这个位置包含-79

分裂,?表示拆分,后跟空格或仅空格

如果要成对提取坐标,请执行以下操作:

for (int i = 0; i < arr.length; i += 2)
{
   System.out.println("coordinate 1 = "+arr[i]);
   System.out.println("coordinate 2 = "+arr[i+1]);
}