如何在大海捞针中检查针的空值和空字符串?

时间:2011-06-20 22:10:25

标签: java

情况:我在代码中遇到了很多检查。而且我想知道一种可以减少它们的方法。

if(needle!=null && haystack!=null)
{
  if(needle.length()==0)
   return true;
  else
  {
   if(haystack.length()==0)
   return false;
   else
   {
     // Do 2 for loops to check character by character comparison in a substring  
   }
 }

}
else 
 return false;

3 个答案:

答案 0 :(得分:5)

也许不同的代码样式会增加代码的可读性,并减少所有检查的嵌套if语句的数量。:

if (needle == null || haystack == null || haystack.isEmpty())
    return false;

if (needle.isEmpty())
    return true;

// compare strings here and return result.

答案 1 :(得分:0)

您可以为字符串创建一个包装类,然后向它们添加一个函数,如isValid(),检查长度是否为== 0.使用始终在isValid()上返回false的Null Object来消除空检查。

如果您可以创建告诉您该做什么的类,而不是在整个代码中传递必须为null的字符串,那么您将获得更多可重复使用的结果:

    class Haystack {
    private static final Haystack NULL_HAYSTACK = new Haystack("");
    private final String value;

    public Haystack(String value) {
        this.value = value;
    }

    public boolean containsNeedle(String needle) {
        return needle != null && value.contains(needle);
    }
}

答案 2 :(得分:0)

您可以将该逻辑合并到单个“StringFunctions”类的单个方法中,并在遇到它们时更新用法以使用常用方法。