我需要保留一个旧应用程序,该应用程序会触发SQL查询来搜索存储在不同位置(即桩号,槽位和子槽位)中的项目。当前查询在主查询后附加“ AND(...)”部分,因此它动态地建立了限制性更强的搜索条件。

当第一个if返回true(意味着用户在桌面应用程序的字段中键入了某些内容并按Enter)时,我需要检查jTextFieldPCA的数据是否属于任何内部条件。数据的值通常是一个数字,但也可以是字母。

我正在尝试的RegExes是这些,但是我缺少一些东西。如何确定第一个内部条件的值为6,第二个内部条件的值为6.6和第三个内部条件所捕获的值为6.6.6?

if (jTextFieldPCA.getText().compareTo("") != 0) {

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) LIKE ");
            }

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) LIKE ");
            }

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) + '.' + CAST(complist.SubSlot AS VARCHAR) LIKE ");
            }
(...)


提前致谢,

格鲁德维格

最佳答案

在点字符之前添加反斜杠

jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "\\." + "[A-Za-z0-9]")

10-05 23:42