大家好,我很高兴能在这里和大家一起学习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);