我正在阅读用户输入。我想知道如何将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.
答案 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方式找到你的“红色”。