如何在Java中过滤NullString

时间:2013-12-16 12:10:43

标签: java

我是Java新手,使用以下类:

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

public class Utils {

    public static String[] fitlerNullString(String[] array) {
        List<String> list = new ArrayList<String>();
        for(String c : array) {
            if(c != null && c.length() > 0) {
                list.add(c);
            }
        }
        return list.toArray(new String[list.size()]);
    }
}

当我这样称呼时,filternullstring函数不返回任何内容 这是我的代码:

private static Options options = new Options();
public static void main(String[] args) {
    options.addOption("acom", "com", true, "abc");
    options.addOption("bcom", "command", true, "def");
    options.addOption("p", "play", true, "ghi");
    options.addOption("h", "help", false, "jkl");
    try {
                   String audioCOM = "";
        String commandCOM = "";
        args = Utils.fitlerNullString(args);
        CommandLine cmd = parser.parse(options, args);
if (cmd.hasOption("acom") ) {
            audioCOM = cmd.getOptionValue("com");;
        }
        if (cmd.hasOption("bcom") ) {
            commandCOM = cmd.getOptionValue("command");;    
        }
    }
}

请指导我。我哪里弄错了?请再次检查我的代码,因为仍然没有结果。

6 个答案:

答案 0 :(得分:1)

我认为您应该使用Guava库来处理String个对象。

对于您的问题,有一个简单的答案:Strings.isNullOrEmpty(stringObject)

如果您不喜欢Guava,可以使用ApacheCommons等等。只是不要重新发明轮子。

答案 1 :(得分:0)

您也可以这样检查,使用 isEmpty()

无需额外的库

if(Strings != null && !Strings.isEmpty())

答案 2 :(得分:0)

您可以使用“番石榴前提条件”。 LINK

答案 3 :(得分:0)

您必须知道,当您启动Java应用程序时,jvm提供的系统数组args不包含空字符串或空字符串。无论如何,通常你可以这样过滤数组:

List<String> argsList = new LinkedList<String>(Arrays.asList(args));
argsList.removeAll(Arrays.asList("", null));

答案 4 :(得分:0)

这样的事情怎么样 -

 public static String[] fitlerNullString(final String[] array) {

       // Return the original array if null or empty
       if(array == null || array.length == 0) {
           return array;
       }

       // Create a new array with the size of the passed array
       String[] strings = new String[array.length];
       // For keeping track of indices of the new array
       int ctr = 0;

       for(int i = 0; i < array.length; i++) {

           // If null or empty continue to the next item if any
           if(array[i] == null || array[i].isEmpty()) {
               continue;
           }

           // Otherwise add and increase the counter
           strings[ctr] = array[i];
           ctr ++;

       }

       // return the array
       return Arrays.copyOfRange(strings, 0, ctr);

   }

测试:

String[] vals = new String[3];
vals[0] = "Apple";
vals[1] = null;
vals[2] = "Banana";

String a[] = fitlerNullString(vals);

for(int j = 0; j < a.length; j++){
    System.out.print(a[j] + "\t");
}

答案 5 :(得分:0)

fitlerNullString()代码应该可以正常工作,您传递的参数可能不包含空值。