我尝试验证一个JTextField
的文本,这个文本域的内容应该类似于66.160507, -153.369141
或66.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
2条答案
按热度按时间f87krz0w1#
一种选择是使用正则表达式来验证文本字段中内容的形式,您可以在the Javadoc for the Pattern class中阅读正则表达式中可以使用的不同符号,但您可能使用的一些符号是
*
任何数目的在前的匹配(包括没有);+
前面的内容的一个或多个匹配;?
零个或一个匹配前面的内容;[ ]
字符范围。\.
一个点(如果反斜杠在JavaString
文本中,则需要转义),\s
任何空格(在String
文本中,此反斜杠也需要转义)。把所有这些放在一起,你可能会得到一个如下的正则表达式。
来匹配一对纬度和经度。
这符合
然后你可以写这样的代码。
3hvapo4f2#
i创建2个正则表达式以验证经度和纬度:
经度:
"^[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$"
纬度:
"^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)$";