用户输入忽略大小写

时间:2011-03-27 09:39:27

标签: java input user-input stdstring ignore-case

我正在阅读用户输入。我想知道如何将equalsIgnoreCase应用于用户输入?

 ArrayList<String> aListColors = new ArrayList<String>();
    aListColors.add("Red");
    aListColors.add("Green");
    aListColors.add("Blue");

 InputStreamReader istream = new InputStreamReader(System.in) ;
 BufferedReader bufRead = new BufferedReader(istream) ;
 String rem = bufRead.readLine();  // the user can enter 'red' instead of 'Red'
 aListColors.remove(rem);  //equalsIgnoreCase or other procedure to match and remove.

5 个答案:

答案 0 :(得分:2)

如果您不需要List,可以使用不区分大小写的比较器初始化Set

Set<String> colors = 
      new TreeSet<String>(new Comparator<String>()
          { 
            public int compare(String value1, String value2)
            {
              // this throw an exception if value1 is null!
              return value1.compareToIgnoreCase(value2);
            }
          });

colors.add("Red");
colors.add("Green");
colors.add("Blue");

现在当你调用remove时,参数的情况不再重要。因此,以下两行都可行:

colors.remove("RED");

colors.remove("Red");

但是只有在您不需要List接口提供的顺序时,这才有效。

答案 1 :(得分:0)

equalsIgnoreCase是String类的一种方法。

尝试

someString.equalsIgnoreCase(bufRead.readLine());

答案 2 :(得分:0)

如果您想忽略这种情况,则在检索时无法执行此操作。

相反,当您将其放入列表中时,需要将其移至全部大写或全部小写。

ArrayList<String> aListColors = new ArrayList<String>();
aListColors.add("Red".toUpperCase());
aListColors.add("Green".toUpperCase());
aListColors.add("Blue".toUpperCase());

然后,你可以稍后再做

aListColors.remove(rem.toUpperCase());

答案 3 :(得分:0)

由于ArrayList.remove方法使用equals而不是equalsIgnoreCase,因此您必须自己遍历列表。

Iterator<String> iter = aListColors.iterator();
while(iter.hasNext()){
     if(iter.next().equalsIgnoreCase(rem))
     {
        iter.remove();
        break;
     }
}

答案 4 :(得分:0)

实现了集合中的方法删除以删除equals()中的元素,这意味着“Red”.equals(“red”)为false,并且您找不到List中具有equalsIgnnoreCase的方法。这对于String只有意义,所以你可以编写自己的类并添加equals方法 - 什么等于你

class Person {
    String name;
    // getter, constructor
    @Override
    public boolean equals(Object obj) {
        return (obj instanceof Person && ((Person)obj).getName().equalsIgnoreCase(name));
    }
}

public class MyHelloWorld {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<Person>();
        list.add(new Person("Red"));
        list.remove(new Person("red"));
    }
}

或没有覆盖的解决方案等于:write方法迭代列表并以equalsIgnoreCase方式找到你的“红色”。