equals方法比较时不区分大小写
时间: 2023-08-04 21:14:07 浏览: 45
好的,那我来为你实现一个equals方法,比较时不区分大小写:
```java
public boolean equalsIgnoreCase(String s1, String s2) {
if (s1 == null && s2 == null) {
return true;
}
if (s1 == null || s2 == null) {
return false;
}
if (s1.length() != s2.length()) {
return false;
}
return s1.toLowerCase().equals(s2.toLowerCase());
}
```
这个方法接收两个字符串参数s1和s2,比较它们是否相等,不区分大小写。如果两个字符串都为null,那么它们是相等的;如果有一个为null,另一个不为null,则它们是不相等的;如果两个字符串长度不同,那么它们也是不相等的;否则,将两个字符串都转换成小写字母形式,再用equals方法比较它们是否相等。
相关问题
如何让该方法不区分大小写进行比较
要使该方法不区分大小写进行比较,你可以在比较之前将两个字符串都转换为小写或大写。这样,无论原始字符串的大小写如何,比较的结果都将是相同的。
在许多编程语言中,都有内置的函数或方法可以用于字符串大小写转换。以下是一些示例:
在Python中,可以使用 `lower()` 方法将字符串转换为小写:
```python
str1 = "Hello"
str2 = "hello"
if str1.lower() == str2.lower():
print("字符串相同(不区分大小写)")
else:
print("字符串不同")
```
在Java中,可以使用 `equalsIgnoreCase()` 方法进行不区分大小写的比较:
```java
String str1 = "Hello";
String str2 = "hello";
if (str1.equalsIgnoreCase(str2)) {
System.out.println("字符串相同(不区分大小写)");
} else {
System.out.println("字符串不同");
}
```
在C#中,可以使用 `Equals()` 方法的重载版本,并将 `StringComparison.OrdinalIgnoreCase` 作为参数,进行不区分大小写的比较:
```csharp
string str1 = "Hello";
string str2 = "hello";
if (str1.Equals(str2, StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("字符串相同(不区分大小写)");
}
else
{
Console.WriteLine("字符串不同");
}
```
这些示例演示了如何在不同编程语言中实现不区分大小写的字符串比较。根据你使用的语言,可以选择适合的方法来实现该功能。
HashMap get 不区分大小写
是的,HashMap的get方法默认是区分大小写的,但是我们可以通过重写HashMap的key的hashCode和equals方法来实现不区分大小写的get方法。具体实现如下:
```java
import java.util.HashMap;
public class CaseInsensitiveHashMap<V> extends HashMap<String, V> {
@Override
public V get(Object key) {
if (key instanceof String) {
String caseInsensitiveKey = ((String) key).toLowerCase();
for (String k : keySet()) {
if (k.toLowerCase().equals(caseInsensitiveKey)) {
return super.get(k);
}
}
}
return null;
}
}
```
上述代码中,我们继承了HashMap,并重写了get方法。在get方法中,我们将传入的key转换为小写,然后遍历HashMap中的所有key,将每个key都转换为小写,再与传入的key进行比较,如果相等,则返回对应的value。这样就实现了不区分大小写的get方法。