【问题标题】:Comparing Strings when one could be null当一个可能为空时比较字符串
【发布时间】:2016-06-05 17:39:07
【问题描述】:

我目前正在尝试从包含响应代码“00,02”的服务器获取响应,我使用 if 和 else if 语句为每个响应执行操作,但第一个 if声明

if (str.equalsIgnoreCase("02")){
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}else if(str.equalsIgnoreCase("00")){
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}else{
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}

【问题讨论】:

  • 这意味着,str 为空。你是如何给str赋值的?
  • 我直接从 json 响应中获取值,如果响应没有 responseCode,那么我将响应消息敬酒给用户,这就是最后一个 else 的意思
  • 在这种情况下,您的第一个检查应该是 null。检查我的答案。
  • 如果代码要做任何有用的事情,您可能希望每个案例都有一个唯一的消息...
  • 我建议你改一下标题,它很容易误导,而且很模糊。

标签: java android string-comparison


【解决方案1】:

比较字符串的空安全方法是:

if ("02".equalsIgnoreCase(str)) {
    ...
}

因此,只需在每种情况下翻转字符串,您就可以开始了!

【讨论】:

    【解决方案2】:

    像这样更新你的状况

    if(str == null || str.length() == 0){
        Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
    }
    else if (str.equalsIgnoreCase("02")){
        Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
    }else if(str.equalsIgnoreCase("00")){
        Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
    }
    else{
        // Unknown code from server
    }
    

    【讨论】:

      【解决方案3】:

      您可以像这样使用TextUtils.isEmpty(str) 函数:

      if (!TextUtils.isEmpty(str)){
      
          if (str.equalsIgnoreCase("02")){
          Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
          }else if(str.equalsIgnoreCase("00")){
              Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
          }else{
          Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
          }
      }
      

      这个函数基本上是为你做的:

      public static boolean isEmpty(@Nullable CharSequence str) {
          if (str == null || str.length() == 0)
              return true;
          else
              return false;
      }
      

      你可以自己做,但这样可能更清楚。

      【讨论】:

      • 也试过了,效果很好,哈哈,看来我有很多选择
      • @henry 喜欢编码,这是一个非常简单的问题,这就是为什么你最终得到了多个好的答案。
      猜你喜欢
      • 2015-07-16
      • 2014-03-11
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      相关资源
      最近更新 更多