【发布时间】:2014-05-09 16:32:27
【问题描述】:
我知道还有其他关于它的问题,但即使有这些,我也无法在我的代码中找到错误。 我写这个是为了检查我的 textField 中写的内容是否是路径,但它似乎不正确。代码如下:
textFieldNewGameUrl.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent arg0) {
boolean isMatched = (textFieldNewGameUrl.getText()).matches("([a-zA-Z]:)?(\\\\[a-zA-Z0-9_.-]+)+\\\\?");
if(isMatched){
labelNewGameFeedback.setText("Ok, the path is correct");
}
else{
labelNewGameFeedback.setText("Strange things have happened : check the path.");
}
}
});
【问题讨论】:
-
预期的输入和行为是什么?
-
“不正确”是什么意思?
-
所以你想检查一个windows路径的正确性。在您看来,仅包含“NUL”的路径是否有效?另见this question / set of answers。换一种说法;试着打开文件看看会发生什么。
-
不要忘记
.matches()会尝试检查 整个输入 是否与正则表达式匹配,这与它的名称似乎暗示的不同。此外,你的正则表达式很重要,你应该为它创建一个Pattern。 -
对,对不起:我用 JFileChooser 选择了一个目录,我需要查看选择的路径是否具有正确的格式。我可以将 textField 设置为不可编辑,但我不想这样做。此代码的输出始终是“发生了奇怪的事情:检查路径”。因为 isMarched 总是假的。我更改了创建模式的代码,我使用 Pattern.compile(..) 方法和匹配器 m.. 但 m.matches() 仍然是错误的。我更新了问题中的代码