有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java忽略搜索字段中的大小写

我不知道在我的代码中把equalsIgnoreCase()toLowerCase()放在哪里。我试图让搜索字段忽略用户输入的大小写

@FXML private void searchForPart(KeyEvent event) {
        if (!partSearch.getText().trim().isEmpty()) {
            partsInventorySearch.clear();
            errorLabel.setText("");
            for (Part p : partsInventory) {
                if (p.getName().contains(partSearch.getText().trim()))
                    partsInventorySearch.add(p);
                else if (Integer.toString(p.getPartID()).contains(partSearch.getText().trim()))
                    partsInventorySearch.add(p);
            }
            if (partsInventorySearch.isEmpty())
                errorLabel.setText("No parts found");
            partTable.setItems(partsInventorySearch);
        }
        else {
            errorLabel.setText("");
            partTable.setItems(partsInventory);
        }
        partTable.refresh();
    }

共 (1) 个答案

  1. # 1 楼答案

    如果你需要使用contains,你应该把这种比较的两个部分转换成相同的大小写

    此外,最好用一个变量替换粘贴相同的代码:

    @FXML
    private void searchForPart(KeyEvent event) {
        String search = partSearch.getText().trim().toLowerCase();
        
        if (!search.isEmpty()) {
            partsInventorySearch.clear();
            errorLabel.setText("");
            
            for (Part p : partsInventory) {
                if (p.getName().toLowerCase().contains(search)
                   || Integer.toString(p.getPartID()).contains(search)) {
                    partsInventorySearch.add(p);
                }
            }
            if (partsInventorySearch.isEmpty())
                errorLabel.setText("No parts found");
            partTable.setItems(partsInventorySearch);
        }
        else {
            errorLabel.setText("");
            partTable.setItems(partsInventory);
        }
        partTable.refresh();
    }