list表中文字符串查找

       大家好,我很高兴能在这里和大家一起学习C#编程。作为一名新手,我对这个强大的编程语言充满了期待和热情。我知道,作为初学者,我可能会面临很多挑战,但我相信,只要我努力学习,不断实践,我一定能够掌握C#编程。

      在这个学习的过程中,我期待能够和大家一起分享经验,共同成长。我也希望能够在与大家的交流中,不断加深对C#编程的理解,找到更好的学习方法。让我们一起努力,共同学习,共同进步!
      以上习惯性废话,以下记录一下我的学习笔记:

  List<string> list = new List<string> { "赵大家是好人", "赵二大也是好人", "爱你一万年", "天下有第一是谁", "老子不是第十","我是中国人" ,"你们好大哥呀!"};

1.主要目的是从一个字符串列表 list 中筛选出所有以指定字符数组 chars1 中的字符作为开头的字符串。
 char[] chars1 = { '赵', '天', '老' };
  List<string> list1 = list.Where(n => chars1.Any(c => n.StartsWith(c.ToString()))).ToList();
 Console.WriteLine("选择含有开头部分字符的元素:");
 foreach (string c in list1)
 Console.WriteLine(c) 

a.An(c => n.StartsWith(c.ToString())):对于每一个字符 c in chars1,检查字符串 n 是否以这个字符开头。
b.Where(n => ...):筛选出所有满足上述条件的字符串 n from list。

2.从字符串列表中选择以 "赵" 开头的字符串,并移除每个字符串中以 "是" 字符开头的部分。
a.使用 LINQ 查询,通过 Where 子句选择以 "赵" 开头的字符串。
b.使用 Select 子句对每个选定的字符串进行处理。在这里,我们查找第一个出现 "是" 的位置,并根据位置将字符串分割为两部分。如果找到了 "是",则返回从 "是" 后面开始的子字符串;否则,返回原字符串

List<string> list2 = list
                   .Where(n => n.StartsWith("赵"))
                   .Select(n =>
              {
                    int index = n.IndexOf('是');
                    return index >= 0 ? n.Substring(index + 1) : n;
               })
                  .ToList();
            Console.WriteLine("先选择赵字开头,再去除含有是字符开头部分的:");
            foreach (string s in list2)
            Console.WriteLine(s);

3.字符串列表中移除每个字符串中以 "有"、"是" 或 "好" 字符开头的部分。
a.使用 LINQ 查询,通过 Select 子句对每个字符串进行处理。在这里,我们定义了一个字符数组 chars,其中包含需要移除的字符。然后,我们查找每个字符串中第一个出现需要移除字符的位置。
b.如果找到了需要移除字符,则返回从该字符后面开始的子字符串;否则,返回原字符串。

List<string> list3 = list
                         .Select(n =>
                         {
                             char[]chars = {'有','是','好' };
                             int index = n.IndexOfAny(chars);
                            //  int index = new[] { '是', '有', '大' }.Select(c => n.IndexOf(c)).Max();
                             return index >= 0 ? n.Substring(index+1) : n;
                         })
                 .ToList();
            Console.WriteLine("去除含有是和有,好字符开头部分:");
            foreach (string s in list3)
                Console.WriteLine(s);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值