【问题标题】:toLowerCase with special/unicode characters throws exception带有特殊/unicode 字符的 toLowerCase 抛出异常
【发布时间】:2010-11-14 11:38:23
【问题描述】:

如果我错了,请纠正我。

如果str 中包含诸如“•”之类的字符,则运行:

str.toLowerCase(Locale.English);

抛出空指针异常。这就是我看到的行为。

那么这里的交易是什么?这是怎么回事?未指定 toLowerCase 抛出空指针异常。

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

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

【问题讨论】:

  • 你确定str 不是null?
  • 你确定str 不是null?
  • 最可能的解释是该代码 sn-p 中的 str 为空。如果没有,您可以在收到错误时发布 str 的确切值吗?
  • 那真是令人毛骨悚然。
  • @Sean 哈哈哈,看到这个我笑了。

标签: java string unicode


【解决方案1】:

我建议尝试String object's equalsIgnoreCase() method,而不是转换为小写。

尽管正如 cmets 所说,toLowerCase() 函数没有理由抛出空指针异常,除非参数为空。我要么使用调试器检查str 的状态,要么将toLowerCase() 函数调用包装在if 语句中,如果str 为空,则执行某些操作(例如抛出异常、打印语句、记录message) 并且不执行函数调用。

【讨论】:

    【解决方案2】:

    嗯,它对我有用:

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

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多