string.Contains处理日期字符串匹配异常问题咨询
问题解析与解答
核心原因很直接:
- 你的日期字符串是
"08/07/2014 07:55:00",Contains("07/2014")返回true,是因为原字符串里确实存在连续的子串"07/2014"(对应原字符串中/07/2014的后半段); Contains("8/07/2014")返回false,是因为原字符串的日期部分开头是"08",而你要找的子串是"8/07/2014"——前者多了一个前导0,两者完全不匹配,自然找不到。
关于转义的疑问:这和转义没有关系,string.Contains()是严格匹配字面量的方法,不需要对/这类普通字符做转义处理。
如果需要实现忽略前导0的匹配需求,可以用两种方式处理:
- 先预处理日期字符串,去除前导0:
string dateStr = ObjectsList[0].Date; // 针对日期部分的前导0处理 if (dateStr.Length > 1 && dateStr[0] == '0') { dateStr = dateStr.Substring(1); } bool result = dateStr.Contains("8/07/2014");
- 使用正则表达式进行模糊匹配:
using System.Text.RegularExpressions; bool result = Regex.IsMatch(ObjectsList[0].Date, @"\d+/07/2014"); // 这个正则会匹配任意数字(1位或多位)后跟/07/2014的情况
内容的提问来源于stack exchange,提问作者rwpk9
相关产品推荐
相关产品推荐

