我正在尝试验证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
答案 0 :(得分:2)
一种选择是使用正则表达式来验证文本字段中内容的形式。您可以在the Javadoc for the Pattern class上阅读可在正则表达式中使用的不同符号,但是您可能会使用的一些符号
*
与之前进行的任何数量的匹配(包括无); +
与以前的比赛有一个或多个比赛; ?
之前的匹配项为零或一; [ ]
一系列字符。 \.
一个点(如果使用Java 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
}