C#中要如何才能刪除一個字符串數組中的空字符串呢?隨着微軟對C#不斷發展和更新,C#中對於數組操作的方式也變得越來越多樣化。以往要實現過濾數組中的空字符串,都是需要實行循環的方式來排除和過濾。C#3.0新增的lambda表達式就可以很方便實現這個功能,下面介紹多種方式來實現清除數組中的空字符串,以及在.net中將字符串數組中字符串為空的元素去除。
方式一:使用lambda表達式篩選過濾掉數組中空字符串
/// <summary> /// 使用lambda表達式排除/過濾/清空/刪除掉字符串數組中的空字符串 /// </summary> /// <param name="args"></param> static void Main(string[] args) { string[] strArray = { "","111","","222","","333"}; Console.WriteLine("輸出帶有空字符串的數組:"); foreach (string str in strArray) { Console.WriteLine(str); } Console.WriteLine("-------------------------------------------"); //使用lambda表達式過濾掉空字符串 strArray = strArray.Where(s=>!string.IsNullOrEmpty(s)).ToArray(); Console.WriteLine("輸出過濾掉空字符串的數組:"); foreach (string str in strArray) { Console.WriteLine(str); } Console.Read(); }
方式二:使用泛型集合List<string>的ForEach循環,過濾獲取正確的字符串,重新添加到新字符串數組中
string[] strArray = { "", "111", "", "222", "", "333" }; Console.WriteLine("輸出帶有空字符串的數組:"); foreach (string str in strArray) { Console.WriteLine(str); } Console.WriteLine("-------------------------------------------"); /* *使用List泛型集合的ForEach方法循環獲取非空空字符串 *這里使用了匿名方法 */ List<string> list = new List<string>(); strArray.ToList().ForEach( (s) => { if (!string.IsNullOrEmpty(s)) { list.Add(s); } } ); strArray = list.ToArray(); Console.WriteLine("輸出過濾掉空字符串的數組:"); foreach (string str in strArray) { Console.WriteLine(str); } Console.Read();
方式三:使用傳統循環方式來排除和刪除字符串數組中的空字符串
string[] strArray = { "", "111", "", "222", "", "333" }; Console.WriteLine("輸出帶有空字符串的數組:"); foreach (string str in strArray) { Console.WriteLine(str); } Console.WriteLine("-------------------------------------------"); //使用循環排除和過濾掉空字符串 List<string> list = new List<string>(); foreach (string s in strArray) { if (!string.IsNullOrEmpty(s)) { list.Add(s); } } strArray = list.ToArray(); Console.WriteLine("輸出過濾掉空字符串的數組:"); foreach (string str in strArray) { Console.WriteLine(str); } Console.Read();
上面三種方式的最終結果都是一樣的,如下圖

