所以,假设我有一个程序,并且Set中的用户目标称为“计算机”。用户输入'computer','COMPUTER','ComPutEr',但它从未找到它,因为它没有正确大写。
你将如何进行Set words = ...... ......并获取Set中的信息并检查它是否等于'Computer',但忽略大写。 Oooor!使其他所有内容都是小写的,但是第一个字符。
示例代码:
Set<String> words= this.getConfig().getConfigurationSection("Test").getKeys(false);
if( allGroups.contains('Computer') ) {
请忽略this.getConfig()。getConfigurationSection(“Test”)。getKeys(false);.我正在寻找修复我正在制作的Minecraft插件的答案,但这似乎是一个更基本的Java知识问题。
感谢帮助人员
答案 0 :(得分:2)
您可以使用TreeSet
因为它可以对比较器进行排序。使用它,您可以实现您想要的行为。像
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 == o2) {
return 0;
}
if (o1 == null) {
return -1;
} else if (o2 == null) {
return 1;
}
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
};
Set<String> set = new TreeSet<>(comparator);
或(来自评论)String.CASE_INSENSITIVE_ORDER
喜欢
Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
答案 1 :(得分:0)
我最终解决了这个问题,感谢Elliot引起了我的注意。
Set<String> words= new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
words.addAll(this.getConfig().getConfigurationSection("Test").getKeys(false));
args[0] = args[0].toLowerCase();
args[0] = args[0].substring(0, 1).toUpperCase() + args[0].substring(1);
if( words.contains(args[0]) ) {
虽然在我的书中这不是一个很好的解决方法,但我使用了同样的方法来解决我写的ATM程序。我目前正在考虑一种方法,使String'args [0]'只需1行来解决所有问题,但这是目前适用于我的方法。
谢谢!