gpt4 book ai didi

java - 如何验证地理坐标?

转载 作者:行者123 更新时间:2023-12-02 02:05:16 25 4
gpt4 key购买 nike

我正在尝试验证 JTextField 的文本。此文本字段的内容应类似于 66.160507, -153.36914166.160507,-153.369141(逗号后不含空格)。到目前为止,我仅验证纬度和经度的范围。这里:

 String [] splitted = jtextField.getText().split(",");
double latitude = Double.parseDouble(splitted[0]);
double longitude = Double.parseDouble(splitted[1])

if(latitude < -90 || latitude > 90)
return false;
else
continue;

if(longitude < -180 || longitude > 180)
return false;
else
continue;

但是现在如何检查 JTextField 中的文本格式和顺序是否正确?我需要验证这两种情况:

must be a double -> must be a comma -> must be a whitespace -> must be a double 
must be a double -> must be a comma -> must be a double

最佳答案

一种选择是使用正则表达式来验证文本字段中内容的形式。您可以在 the Javadoc for the Pattern class 中阅读可在正则表达式中使用的不同符号。 ,但您可能会使用的一些是

  • * 任意数量的之前的匹配项(包括没有);
  • + 前面的一个或多个匹配项;
  • ? 零个或一个匹配前面的内容;
  • [ ] 字符范围。
  • \. 一个点(如果反斜杠位于 Java String 文字中,则需要转义),
  • \s 任何空格(并且此反斜杠也需要在 String 文字中转义)。

将这些放在一起,您可能会想出这样的正则表达式。

-?[1-9][0-9]*(\.[0-9]+)?,\s*-?[1-9][0-9]*(\.[0-9]+)?

匹配一对纬度和经度。

这匹配

  • 可以选择减号,
  • 第一位数字为 0 以外的数字,
  • 任意数量的其他数字(甚至没有),
  • (可选)由小数点和任意数量的其他数字组成的序列,
  • 一个逗号,
  • 任意数量的空白字符(甚至没有),
  • 将本段中的前四个要点重述一遍。

然后您可以编写这样的代码。

String textValue = jtextField.getText();
String twoDoublesRegularExpression = "-?[1-9][0-9]*(\\.[0-9]+)?,\\s*-?[1-9][0-9]*(\\.[0-9]+)?";

if (textValue.matches(twoDoublesRegularExpression)) {
// this value is OK
}

关于java - 如何验证地理坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50937972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com