Удалить нулевое значение из массива String в Java

Как предложено в этом проекте кода. Статья: https://www.codeproject.com/kb/threads/howtodeletecurrentprocess.aspx

вызывает cmd с аргументами, как показано ниже .

 Process.Start("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del " +  Application.ExecutablePath);

Но в основном, как предложил @Sean, убедитесь, что вы не дождались выхода cmd.exe в свой скрипт.

27
задан JSBձոգչ 10 November 2010 в 23:55
поделиться

2 ответа

Это строки нулевой длины, а не нуль. Но если вы хотите удалить их:

firstArray[0] refers to the first element
firstArray[1] refers to the second element

Вы можете переместить второе в первое таким образом:

firstArray[0]  = firstArray[1]

Если вы должны были сделать это для элементов [1,2], затем [2,3] и т. д. вы в конечном итоге сдвинете все содержимое массива влево, исключив элемент 0. Можете ли вы увидеть, как это применимо?

-1
ответ дан Mud 10 November 2010 в 23:55
поделиться

Кажется, никто не упомянул об использовании метода nonNull, который также можно использовать с streams в Java 8 для удаления нуля (но не пустого) как:

String[] origArray = {"Apple", "", "Cat", "Dog", "", null};
String[] cleanedArray = Arrays.stream(firstArray).filter(Objects::nonNull).toArray(String[]::new);
System.out.println(Arrays.toString(origArray));
System.out.println(Arrays.toString(cleanedArray));

И вывод:

[Apple, Cat, Dog, NULL]

[Apple, Cat, Dog,]

Если мы хотим включить пустой также, то мы можем определить вспомогательный метод (в классе Utils (скажем)):

public static boolean isEmpty(String string) {
        return (string != null && string.isEmpty());
    }

И затем использовать его для фильтрации элементов следующим образом:

Arrays.stream(firstArray).filter(Utils::isEmpty).toArray(String[]::new);

Я считаю, что Apache common также предоставляет служебный метод StringUtils.isNotEmpty, который также можно использовать.

5
ответ дан i_am_zero 10 November 2010 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: