首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证地理坐标?

如何验证地理坐标?
EN

Stack Overflow用户
提问于 2018-06-19 22:52:08
回答 1查看 3.7K关注 0票数 0

我正在尝试验证JTextField的文本。这个textfield的内容应该类似于这个66.160507, -153.36914166.160507,-153.369141 (逗号后面没有空格)。到目前为止,我只验证了纬度和经度的范围。在此:

代码语言:javascript
复制
 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中的文本是否采用正确的格式和顺序呢?我需要验证这两种情况:

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-19 23:24:01

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

  • *以前的任何数量的匹配(包括没有);
  • +一个或多个以前的匹配;
  • ? 0或1匹配之前的情况;
  • [ ]的字符范围。
  • \. a String点(如果反斜杠位于String文本中,则需要转义),
  • \s任何空格(这个反斜杠也需要在String文本中转义)。

将所有这些放在一起,您可能会得到这样一个正则表达式。

代码语言:javascript
复制
-?[1-9][0-9]*(\.[0-9]+)?,\s*-?[1-9][0-9]*(\.[0-9]+)?

与经纬度相匹配。

这个匹配

  • 或者是负号,
  • 一个不是0的数字,对于第一个数字,
  • 任何其他数字(甚至没有),
  • 可选地,由小数点组成的序列,然后是任意数量的其他数字,
  • 一个逗号,
  • 任何数量的空格字符(甚至没有),
  • 这一段的前四个要点,再来一遍。

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

代码语言:javascript
复制
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
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50937972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档