【问题标题】:Java: Comparing Array of Characters case sensitive? [duplicate]Java:比较字符数组是否区分大小写? [复制]
【发布时间】:2013-03-24 05:40:53
【问题描述】:

我正在编写一个程序来比较几个字符与一个字符数组并返回数组的索引。有没有办法比较忽略大小写? 例如下面:

String in = "I AM A HAPPY BOY";
char[] cha = new char[] {a,c,e,g,i,k,h,m,o,q,s,u,w,y};
char testChar = in.substring(4,5).charAt(0);

for(int a = 0; a<char.length; a++){
   if(cha[a] == testChar)
       return a+1;
}

我无法获取索引,因为它总是指向 0。无论如何这里可以忽略大小写吗?感谢一些建议。

【问题讨论】:

标签: java


【解决方案1】:

对两个字符都使用 Character.toLowerCase:

if (Character.toLowerCase(cha[a]) == Character.toLowerCase(testChar)) {
    // logic here
}

附带说明,如果数组中的所有字符都已经是小写,则可以不使用第一个 toLowerCase,甚至可以在初始字符串上使用 toLowerCase并避免两者。

【讨论】:

  • 我认为你缺少一些结束括号。
  • 已修复 - 感谢您的指点。 :)
  • 谢谢它工作得很好!
【解决方案2】:

in=in.toLowerCase();

然而,在大小写之间转换字符的最有效方法是翻转第 6 位(ASCII 值相差 32)。

【讨论】:

  • Java 不适用于 ASCII。它适用于Unicode。但是 32 差异确实适用于英文字母。
【解决方案3】:

在测试相等性之前使用Character.ToLowerCase(char c)

【讨论】:

    【解决方案4】:

    你可以使用Character.toLowerCase(char):

    if (Character.toLowerCase(cha[a]) == Character.toLowerCase(testChar)) {
       return a+1;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      相关资源
      最近更新 更多