我正在尝试验证JTextField的文本。这个textfield的内容应该类似于这个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 发布于 2018-06-19 23:24:01
一种选择是使用正则表达式来验证文本字段中的形式。您可以阅读在模式类的Javadoc正则表达式中可以使用的不同符号,但是您可能使用的一些符号是
*以前的任何数量的匹配(包括没有);+一个或多个以前的匹配;? 0或1匹配之前的情况;[ ]的字符范围。\. a String点(如果反斜杠位于String文本中,则需要转义),\s任何空格(这个反斜杠也需要在String文本中转义)。将所有这些放在一起,您可能会得到这样一个正则表达式。
-?[1-9][0-9]*(\.[0-9]+)?,\s*-?[1-9][0-9]*(\.[0-9]+)?与经纬度相匹配。
这个匹配
然后,您可以这样编写代码。
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
}https://stackoverflow.com/questions/50937972
复制相似问题