Видаліть порожні значення з масиву за допомогою C #


76

Як я можу видалити порожні значення з масиву?

Наприклад:

string[] test={"1","","2","","3"};

у цьому випадку чи є який-небудь спосіб видалення порожніх значень з масиву за допомогою C #?

Наприкінці я хочу отримати масив у такому форматі:

test={"1","2","3"};

що означає 2 значення, вилучені з масиву, і зрештою я отримую 3.


1
Як ви отримуєте вміст масиву, можливо, щось можна було зробити їх
V4Vendetta

Відповіді:


192

Якщо ви використовуєте .NET 3.5+, ви можете використовувати LINQ (Мовний інтегрований запит).

test = test.Where(x => !string.IsNullOrEmpty()).ToArray();

2
Мабуть, слід використовувати String.IsNullOrEmpty для безпеки, інакше нульові значення потраплять до нового масиву.
apiguy

4
Мені довелося додати x.Trim (), щоб також позбутися значень, що містять лише пробіли: test = test.Where (x =>! String.IsNullOrEmpty (x.Trim ())). ToArray ();
GuidoG

7
String.IsNullOrWhiteSpace також буде працювати, тоді вам не доведеться обрізати кожне значення
wonea

34

Ви можете використовувати Linq, якщо ви використовуєте .NET 3.5 або пізнішу версію:

 test = test.Where(x => !string.IsNullOrEmpty(x)).ToArray();

Якщо ви не можете використовувати Linq, ви можете зробити це так:

var temp = new List<string>();
foreach (var s in test)
{
    if (!string.IsNullOrEmpty(s))
        temp.Add(s);
}
test = temp.ToArray();

3

Я пишу код нижче, щоб видалити порожнє значення в рядку масиву.

string[] test={"1","","2","","3"};
test= test.Except(new List<string> { string.Empty }).ToArray();

2

Я вважаю за краще використовувати два варіанти, пробіли та порожнє:

test = test.Where(x => !string.IsNullOrEmpty(x)).ToArray();
test = test.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();

Хороша відповідь, це актуально, якщо, наприклад, ви аналізуєте файл CSV (або рядок) і у вас з’являються поля, заповнені пробілами.
Тахір Халід

2
Метод IsNullOrWhiteSpace () насправді розглядає порожній рядок (без пробілів) як пробіл, тому використання як IsNullOrEmpty (), так і IsNullOrWhiteSpace () є зайвим.
aardvark
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.