如何在Java中过滤空字符串

如何在Java中过滤空字符串,java,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; publ

我是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()]);
    }
}

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

我认为您应该使用Guava库来处理
字符串
对象

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


如果你不喜欢番石榴,那里有阿帕切康姆斯和更多。只是不要重新发明轮子。

你也可以这样检查,使用

不需要额外的图书馆


你可以使用“番石榴先决条件”

您必须知道,当启动Java应用程序时,系统数组args由jvm提供,不包含空字符串或空字符串。总之,通常可以通过以下方式过滤阵列:

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

像这样的东西怎么样-

 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);

   }
公共静态字符串[]fitlerNullString(最终字符串[]数组){
//如果为null或为空,则返回原始数组
if(array==null | | array.length==0){
返回数组;
}
//使用传递的数组的大小创建一个新数组
String[]strings=新字符串[array.length];
//用于跟踪新数组的索引
int ctr=0;
for(int i=0;i
测试:

String[]vals=新字符串[3];
VAL[0]=“苹果”;
VAL[1]=null;
VAL[2]=“香蕉”;
字符串a[]=fitlerNullString(VAL);
对于(int j=0;j
fitlerNullString()代码应该可以正常工作,您传递的参数可能不包含空值。

在执行
java MainClass args
时,您是否真的通过命令行提供了任何参数(args)?如果返回的是空数组,则表明每个参数都是空的或null。你正在向应用程序传递什么参数?你必须给出一些参数。。。因此,它将筛选properlyno我不会通过命令行在args中传递任何解释问题的内容,我希望得到这样的结果,如果(cmd.haspoption(“a”){audioCOM=cmd.getOptionValue(“com”);},但cmd返回null@user2971145Wat是parser.parse(选项,参数)
sajal我检查你的代码结果是否相同,没有返回我想要的内容,比如if(cmd.haspoption(“acom”){audioCOM=cmd.getOptionValue(“com”);}if(cmd.haspoption(“bcom”){commandCOM=cmd.getOptionValue(“command”);}
List<String> argsList = new LinkedList<String>(Arrays.asList(args));
argsList.removeAll(Arrays.asList("", null));
 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");
}