你可以 equalsIgnoreCase 一个集合吗?
Can you equalsIgnoreCase a Set?
所以,假设我有一个程序,集合中的用户目标称为 'Computer'。用户输入 'computer'、'COMPUTER'、'ComPutEr',但由于大小写不正确,始终找不到。
您将如何获取 Set words = ... ... ... 并获取 Set 内部的信息并检查它是否等于 'Computer',但忽略大写。哦哦!使其他一切都是小写,但第一个字符。
示例代码:
Set<String> words= this.getConfig().getConfigurationSection("Test").getKeys(false);
if( allGroups.contains('Computer') ) {
请忽略 this.getConfig().getConfigurationSection("Test").getKeys(false);。我正在寻找修复我正在制作的 Minecraft 插件的答案,但这似乎是一个更基本的 Java 知识问题。
谢谢大家的帮助
您可以使用 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);
感谢 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 程序中解决了这个问题。我目前正在考虑一种方法,使字符串 'args[0]' 只需一行即可修复所有问题,但这是目前对我有用的方法。
谢谢!
所以,假设我有一个程序,集合中的用户目标称为 'Computer'。用户输入 'computer'、'COMPUTER'、'ComPutEr',但由于大小写不正确,始终找不到。
您将如何获取 Set words = ... ... ... 并获取 Set 内部的信息并检查它是否等于 'Computer',但忽略大写。哦哦!使其他一切都是小写,但第一个字符。
示例代码:
Set<String> words= this.getConfig().getConfigurationSection("Test").getKeys(false);
if( allGroups.contains('Computer') ) {
请忽略 this.getConfig().getConfigurationSection("Test").getKeys(false);。我正在寻找修复我正在制作的 Minecraft 插件的答案,但这似乎是一个更基本的 Java 知识问题。
谢谢大家的帮助
您可以使用 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);
感谢 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 程序中解决了这个问题。我目前正在考虑一种方法,使字符串 'args[0]' 只需一行即可修复所有问题,但这是目前对我有用的方法。
谢谢!