匹配相似单词的最佳方式?

时间:2017-05-11 20:50:50

标签: java regex

我正在尝试显示与用户输入内容类似的单词列表。例如,如果我有一个单词列表,如[“Software Eng 1”,“Software Eng 2”,“Blah”]

用户键入S,它将过滤到Software Eng 1和Software Eng 2.同样,用户输入So并过滤到相同的两个单词。但如果用户键入Soc,它就什么都没有。做这个的最好方式是什么?我试过了

for (EmployeeName r : list)
{
    if (textField.getText().matches(r.getName()))
    {
        System.out.println(r.getName() + " is similar");
    }
    else System.out.println("NOPE");
} 

但是,当textField.getText()完全相同时,这似乎只是抓住了这个案例

2 个答案:

答案 0 :(得分:2)

  1. 如果您正在检查是否可以使用String#startsWith 列表中的任何Employees名称都以输入的文本开头。
  2. 示例:

    for (EmployeeName r : list)
    {
        if (r.getName().startsWith(textField.getText()))
        {
            System.out.println(r.getName() + " is similar");
        } 
    } 
    
    1. 如果您要查看输入的文本是否包含在Employees名称中的任何位置 那么String#contains就可以胜任。
    2. 您甚至可以使用String#indexOf检查输入的文字是否包含在<{1}}名称中的
    3. 示例:

      Employees

答案 1 :(得分:0)

例如,您可以使用contains;

textField.getText().toLowerCase().contains(r.getName().toLowerCase())