我是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");;
}
}
}
请指导我。我哪里弄错了?请再次检查我的代码,因为仍然没有结果。
答案 0 :(得分:1)
我认为您应该使用Guava库来处理String
个对象。
对于您的问题,有一个简单的答案:Strings.isNullOrEmpty(stringObject)
如果您不喜欢Guava,可以使用ApacheCommons等等。只是不要重新发明轮子。
答案 1 :(得分:0)
答案 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()代码应该可以正常工作,您传递的参数可能不包含空值。