代码之家  ›  专栏  ›  技术社区  ›  Victor

带有特殊/unicode字符的toLowerCase引发异常

  •  2
  • Victor  · 技术社区  · 17 年前

    如果 str 有一个字符,例如“ •

    str.toLowerCase(Locale.English);
    

    引发空指针异常。这就是我看到的行为。

    这是怎么回事?发生什么事?没有指定toLowerCase抛出空指针异常。

    有没有一个简单的方法来解决这个问题?我需要str是小写的,以便能够对另一个字符串使用不区分大小写的contains检查,但我需要该字符串包含这些字符,以便正确显示。

    如果没有“简单的方法”,你会说什么是最有效的解决方案

    2 回复  |  直到 17 年前
        1
  •  3
  •   Thomas Owens    17 年前

    与其转换成小写,我建议尝试 String object's equalsIgnoreCase() method .

    不过,正如评论所说,没有理由这样做 toLowerCase() 函数将引发null指针异常,除非参数为null。我会使用调试器来检查 str 或者把它包起来 函数中的函数调用 if str 如果为null,则执行某些操作(如引发异常、打印语句、记录消息)而不执行函数调用。

        2
  •  2
  •   Jonathan Holloway    17 年前

    String upper = new String("asdCSD4rSDFSDFS•••••••••XCj");
    String lower = upper.toLowerCase(Locale.ENGLISH);
    System.out.println("Lower " + lower);
    
    Lower asdcsd4rsdfsdfs•••••••••xcj