07.C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串

本文介绍三种在C#中过滤字符串数组中空字符串的方法:使用lambda表达式、List的ForEach循环及传统循环方式,帮助开发者高效处理字符串数组。

方式一:使用lambda表达式筛选过滤掉数组中空字符串        

 1        /// <summary>
 2             /// 使用lambda表达式排除/过滤/清空/删除掉字符串数组中的空字符串
 3             /// </summary>
 4             /// <param name="args"></param>
 5             static void Main(string[] args)
 6             {
 7                 string[] strArray = { "","111","","222","","333"};           
 8                 Console.WriteLine("输出带有空字符串的数组:");
 9                 foreach (string str in strArray)
10                 {
11                     Console.WriteLine(str);
12                 }
13                 Console.WriteLine("-------------------------------------------");
14                 //使用lambda表达式过滤掉空字符串
15                 strArray = strArray.Where(s=>!string.IsNullOrEmpty(s)).ToArray();
16                 Console.WriteLine("输出过滤掉空字符串的数组:");
17                 foreach (string str in strArray)
18                 {
19                     Console.WriteLine(str);
20                 }
21                 Console.Read();
22             }

 
方式二:使用泛型集合List<string>的ForEach循环,过滤获取正确的字符串,重新添加到新字符串数组中          

 1           string[] strArray = { "", "111", "", "222", "", "333" };
 2                 Console.WriteLine("输出带有空字符串的数组:");
 3                 foreach (string str in strArray)
 4                 {
 5                     Console.WriteLine(str);
 6                 }
 7                 Console.WriteLine("-------------------------------------------");
 8      
 9                 /*
10                  *使用List泛型集合的ForEach方法循环获取非空空字符串
11                  *这里使用了匿名方法
12                  */                        
13                 List<string> list = new List<string>();
14                 strArray.ToList().ForEach(
15                 (s) =>
16                 {
17                     if (!string.IsNullOrEmpty(s))
18                     {
19                         list.Add(s);
20                     }
21                 }
22                 );
23                 strArray = list.ToArray();
24      
25                 Console.WriteLine("输出过滤掉空字符串的数组:");
26                 foreach (string str in strArray)
27                 {
28                     Console.WriteLine(str);
29                 }
30                 Console.Read();

 
方式三:使用传统循环方式来排除和删除字符串数组中的空字符串          

 1           string[] strArray = { "", "111", "", "222", "", "333" };
 2                 Console.WriteLine("输出带有空字符串的数组:");
 3                 foreach (string str in strArray)
 4                 {
 5                     Console.WriteLine(str);
 6                 }
 7                 Console.WriteLine("-------------------------------------------");
 8      
 9                 //使用循环排除和过滤掉空字符串             
10                 List<string> list = new List<string>();
11                 foreach (string s in strArray)
12                 {
13                     if (!string.IsNullOrEmpty(s))
14                     {
15                         list.Add(s);
16                     }
17                 }
18                            
19                 strArray = list.ToArray();
20      
21                 Console.WriteLine("输出过滤掉空字符串的数组:");
22                 foreach (string str in strArray)
23                 {
24                     Console.WriteLine(str);
25                 }
26                 Console.Read();

转载于:https://www.cnblogs.com/zhh19981104/p/9692068.html

using CsvHelper; using CsvHelper.Configuration; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CsvHelper第三方 { public partial class Form1 : Form { public DataTable dataTable = new DataTable();//表格数据类型 可以添加行数据 public string currentPath;//文件路径 public Form1() { InitializeComponent(); //dataTable.Columns.Add("ID",typeof(int));//添加一列 类型是整型的 //DataRow row1 = dataTable.NewRow();//创建一个新行 //row1["ID"] = 1;//给新行的每一列添加值 //DataSource 表格间的数据源 //绑定数据源 dataGridView1.DataSource = dataTable; //是否为每一个新列创建对应的数据,如果要是等于true,数据会自动绑定到新列上 //dataGridView1.AutoGenerateColumns = true; //dataGridView1.AutoGenerateColumns = false; //不会自动创建新列 必须手动创建所以的列并且设置数据绑定, } //读取 private void button1_Click(object sender, EventArgs e) { using (OpenFileDialog ofd = new OpenFileDialog())//打开一个文件对话框 { ofd.Filter = "CSV文件(*.csv)|*.csv";//过滤文件类型 只保留csv文件 ofd.Title = "打开csv文件"; if (ofd.ShowDialog()==DialogResult.OK) { //ofd.ShowDialog()打开对话框 //DialogResult.OK 对话框的结果是ok //读取路径下的csv //文件路径 ofd.FileName //MessageBox.Show(ofd.FileName); LoadCsvFile(ofd.FileName);//自己封装的一个函数 根据路径读取内容 } } } //加载csv public void LoadCsvFile(string filePath) { //尝试执行代码 try { //CsvConfiguration 创建csv读取或写入的一些配置 //using System.Globalization; //CultureInfo.InvariantCulture 文化区域设置,尽量保证不同国家的格式不一样的话,也能正常解析 //1.创建csv读取或写入的一些配置 var configation = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ",", //分割符号设置 HasHeaderRecord = true, //是否有表头的设置 MissingFieldFound = null, //如果缺失字段的处理 BadDataFound = null, //错误数据的处理 Encoding = Encoding.UTF8, //编码的设置 }; //2.创建c#StreamReader读取工具 using (var reader = new StreamReader(filePath, Encoding.Default)) //创建读取工具 //3.创建csvhelper的读取对象 参数需要StreamReader对象 using (var csv = new CsvReader(reader,configation)) { //4.读取数据到datatable //CsvDataReader 数据读取对象 using (var r1 = new CsvDataReader(csv)) { dataTable.Clear(); //先清空dataTable dataTable.Load(r1); //添加本次的数据 } } currentPath = filePath; //保存当前文件的路径 MessageBox.Show("文件加载成功"); } catch (Exception ex) //如果出错了 捕获异常 { //DivideByZeroException 除数为0的异常 //IndexOutOfRangeException 索引超出界限的异常 //ArgumentException 参数为null的异常 //Exception 所有异常类的基类 //数组越界的异常 //throw;//抛出异常 MessageBox.Show("文件加载失败"); } } //写入 private void button2_Click(object sender, EventArgs e) { var configation = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ",", //分割符号设置 HasHeaderRecord = true, //是否有表头的设置 MissingFieldFound = null, //如果缺失字段的处理 BadDataFound = null, //错误数据的处理 Encoding = Encoding.Default, //编码的设置 }; using (var sw1 = new StreamWriter(currentPath,false, Encoding.Default)) using (var csv = new CsvWriter(sw1, configation)) { //写入表头 foreach (DataColumn item in dataTable.Columns) //遍历所有列 { csv.WriteField(item.ColumnName); //把所有的列的标题写入csv文件中 } csv.NextRecord(); //开始下一个记录 //写入表数据 foreach (DataRow item in dataTable.Rows)//遍历所有的行 { for (int i = 0;i < dataTable.Columns.Count;i++)//遍历每一列 { //item[i]?.ToString()??"" 如果item[i]处转成字符串,如果不存在设置为" " csv.WriteField(item[i]?.ToString()??""); } //一行结束后 在进行第二行的写入 csv.NextRecord(); } } MessageBox.Show("写入成功"); } //添加csv数据 int count = 0; Random r = new Random(); private void button3_Click(object sender, EventArgs e) { count++; DataRow row1 = dataTable.NewRow(); // 创建新行 row1["姓名"] = "卤蛋" + count + "号"; row1["年龄"] = r.Next(18,50); row1["性别"] = "男"; row1["工资"] = r.Next(1000, 5000); dataTable.Rows.Add(row1); } } } csv文件里有姓名这一列,添加数据为什么显示没有姓名这一列列
最新发布
09-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值