如何筛选NullString在Java
我是新来的Java,下面的类工作:如何筛选NullString在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");;
}
}
}
请指引我。我在哪里犯了一个错误?请再次检查我的代码,因为仍然没有结果。
如何像这个 -
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");
}
sajal我检查你的代码的结果是一样什么回报,我想像if(cmd.hasOption(“acom”)){} {audioCOM = cmd.getOptionValue(“com”);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, } 如果(cmd.hasOption( “管理学士学位”)){ commandCOM = CMD。getOptionValue( “指令”);; } } } – user2971145
@ user2971145您是否传递null?检查我的编辑测试。 –
hey sajral非常感谢你的代码为我工作 – user2971145
我认为你应该使用的番石榴库与String
对象的工作。
对于你的问题有一个简单的答案有:Strings.isNullOrEmpty(stringObject)
如果你不喜欢番石榴有ApacheCommons等等。只是不要重新发明*。
我想造成这样的,如果(cmd.hasOption(“A” )){ \t \t \t \t AUDIOCOM = cmd.getOptionValue( “COM”);; \t \t \t}但CMD返回null – user2971145
请检查我的更新问题 – user2971145
@ user2971145笏这是'parser.parse(选项,参数)' – Prateek
你必须要知道,当你启动Java应用程序,由JVM提供系统阵列指定参数和不包含空或空字符串。总之,一般就可以过滤数组是这样的:
List<String> argsList = new LinkedList<String>(Arrays.asList(args));
argsList.removeAll(Arrays.asList("", null));
fitlerNullString()的代码应该工作正常,你的说法正在传递可能不包含空值。
你真的做'的Java MainClass args'时提供通过命令行任何东西(参数)? –
如果它返回一个空白数组,则表明每个参数都为空或为空。你传递给应用程序的是什么论点? – MasNotsram
你必须能够赋予一些参数......所以它西港岛线筛选正确 –