如何从List<string>中筛选以"OO"开头的元素?代码报错求助
问题分析与修复
你的代码存在几个明显问题,导致无法正常运行并得到预期结果:
- 变量名大小写不一致:定义的变量是
mylist,但调用Add方法时写成了Mylist,C#是大小写敏感语言,这会直接引发编译错误。 - 筛选逻辑错误:
x[0] == 'OO'完全不成立——x[0]取的是字符串的单个字符,而'OO'是无效的字符常量(字符只能包含单个字符),就算改成双引号的字符串,单字符也无法和双字符的"OO"相等,同时还没考虑字符串长度不足2时的索引越界问题。
修复后的完整代码
List<string> mylist = new List<string>(); mylist.Add("5876575"); mylist.Add("OO12571"); mylist.Add("12287324"); mylist.Add("87665751"); mylist.Add("97213233"); mylist.Add("87612222"); mylist.Add("OO76566"); List<string> matches = mylist.Where(x => x.StartsWith("OO")).ToList();
关键说明
- 统一变量名大小写:将
Mylist修正为mylist,同时保证Add方法首字母大写(符合C#帕斯卡命名规范)。 - 使用
StartsWith方法:这是判断字符串开头最安全简洁的方式,它会自动处理字符串为空、长度不足的情况,避免手动索引可能触发的IndexOutOfRangeException。 - 如果需要忽略大小写匹配,可以使用重载方法:
x.StartsWith("OO", StringComparison.OrdinalIgnoreCase),但你的需求是精确匹配"OO"开头,默认的精确匹配即可满足。
内容的提问来源于stack exchange,提问作者kumas srunk
相关产品推荐
相关产品推荐

