如何简化C#中判断用户输入包含指定字符串的代码?
简化C# Yes/No输入判断的几种方法
方法一:统一小写+集合匹配
先将用户输入转为全小写,再检查是否包含在预定义的肯定回答集合中,代码更简洁且易维护:
var positiveResponses = new HashSet<string> { "yes", "y", "it is" }; var lowerInput = UserInputCorrectnessTest.ToLower(); else if (positiveResponses.Any(response => lowerInput.Contains(response))) { // 你的业务逻辑代码 }
说明:使用HashSet是因为它的查找效率优于普通List,后续新增肯定表述直接往集合里加即可。
方法二:不区分大小写的Contains重载
利用StringComparison.OrdinalIgnoreCase参数让Contains忽略大小写,结合集合实现判断:
var positiveResponses = new HashSet<string> { "yes", "y", "it is" }; else if (positiveResponses.Any(response => UserInputCorrectnessTest.Contains(response, StringComparison.OrdinalIgnoreCase))) { // 你的业务逻辑代码 }
说明:无需转换整个输入字符串的大小写,直接在匹配时指定规则,适合需要保留原输入场景。
方法三:正则表达式匹配
如果需要更灵活的匹配(比如允许用户输入零散的大小写组合,如"It Is"、"Y"),可以用正则表达式:
else if (System.Text.RegularExpressions.Regex.IsMatch(UserInputCorrectnessTest, @"\b(yes|y|it is)\b", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { // 你的业务逻辑代码 }
说明:\b是单词边界,能避免误匹配类似"yesman"这类包含目标字符串但语义不符的内容,RegexOptions.IgnoreCase直接覆盖所有大小写情况。
内容的提问来源于stack exchange,提问作者rasshas98
相关产品推荐
相关产品推荐

