当前位置: 首页 > 知识库问答 >
问题:

equalsIgnoreCase不符合Javadoc?

汪明德
2023-03-14

如果两个字符串具有相同的长度,并且两个字符串中对应的字符具有相同的忽略大小写,则将它们视为相同的忽略大小写。两个字符c1和c2被认为是相同的忽略情况,如果以下至少一个为真:

这两个字符是相同的(通过==运算符比较)

对每个字符应用character.touppercase(char)方法会产生相同的结果

public class Test
{
    private static void testChars(char ch1, char ch2) {
        boolean b1 = (ch1 == ch2 ||
                   Character.toLowerCase(ch1) == Character.toLowerCase(ch2) ||
                   Character.toUpperCase(ch1) == Character.toUpperCase(ch2));
        System.out.println("Characters match: " + b1);

        String s1 = Character.toString(ch1);
        String s2 = Character.toString(ch2);
        boolean b2 = s1.equalsIgnoreCase(s2);
        System.out.println("equalsIgnoreCase returns: " + b2);
    }

    public static void main(String args[]) {
        testChars((char)0x0130, (char)0x0131);
        testChars((char)0x03d1, (char)0x03f4);
    }
}
Characters match: false
equalsIgnoreCase returns: true
Characters match: false
equalsIgnoreCase returns: true

共有1个答案

华章横
2023-03-14

这些字符的大小写定义可能是特定于区域的。从JavaDoc forcharacter.ToLowerCase():

通常,应该使用String.ToLowerCase()将字符映射到小写。字符串大小写映射方法比字符大小写映射方法有几个好处。字符串大小写映射方法可以执行区分区域设置的映射、区分上下文的映射和1:m字符映射,而字符大小写映射方法则不能。

如果查看String.ToLowerCase()方法,您会发现它被重写以接受Locale对象。这将执行特定于区域设置的大小写转换。

 类似资料:
  • 将此String与另一个String进行比较,忽略大小写。 语法 (Syntax) Boolean equalsIgnoreCase(String str) 参数 (Parameters) Str - 用于比较此String的String 返回值 (Return Value) 如果参数不为null且字符串相等,则此方法返回true,忽略大小写; 否则是假的。 例子 (Example) 以下是此方

  • 此项目是一个可编辑的字典程序。我正在尝试循环浏览已添加到词典中的单词,并将用户通过扫描仪输入的单词与已添加的单词进行比较。我的问题是,无论输入多么准确,我创建的异常总是被调用。我不确定异常是否错误,或者字符串是否比较不正确。字典中的单词是从一个名为“dictionary.txt”的文件中读取的。如果有帮助,程序将使用输入/输出。这是代码。。。。请帮忙!!

  • 描述 (Description) 此方法将此String与另一个String进行比较,忽略了大小写。 两个字符串被认为是相等的忽略大小写,如果它们具有相同的长度,并且两个字符串中的相应字符等于忽略大小写。 语法 (Syntax) 以下是此方法的语法 - public boolean equalsIgnoreCase(String anotherString) 参数 (Parameters) 这是

  • 问题内容: 我在AppDelegate中,尝试传递对WatchKit扩展请求的答复。我不能使用枚举数组作为其值键入为AnyObject的Dictionary中的值。在操场上进行实验显示: 当然,可以通过将枚举转换为字符串或数字来解决此问题,但是为什么这在Swift中是类型错误? 问题答案: 为了与Objective-C兼容而存在。您只能将对象放入Objective- C可以解释的数组中。Swift

  • 问题内容: 我正在Mac上使用Eclipse IDE(版本:3.4.2),但遇到了以下问题。 使用equal()或equalsIgnoreCase()方法在字符串之间进行比较时,即使字符串相等,我也会收到false。例如,即使values [0] =“ debug_mode”,以下代码也将以下条件视为false: 这是以下循环的一部分: 我尝试使用并获得了相同的结果。有人知道为什么吗? 问题答案:

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。