匹配C#中的模式

本文关键字:模式 匹配 | 更新日期: 2023-09-27 17:57:26

这似乎是一件显而易见的事情,但我想知道C#中是否有用于匹配字符串的通配符。我想写一个程序,让用户可以根据数据库中的日期值搜索一些东西。到目前为止,只要输入了整个日期,我就可以工作,但输入半个日期会导致解析错误我现在使用这个代码

" ... where Date like " DateTime.Parse(textbox.text.trim()) " + %;"

我想看看是否有一种方法可以查看用户输入的内容(只有年份,或没有日期的月份和年份,或者如果只输入半年,则不会崩溃)

涉及在SQL中执行此操作的解决方案本身并不重要

匹配C#中的模式

解决方案1:

public static class MyStringExtensions
{
  public static bool Like(this string toSearch, string toFind)
  {
   return new Regex(@"'A" + new Regex(@"'.|'$|'^|'{|'[|'(|'||')|'*|'+|'?|''").Replace(toFind, ch => @"'" + ch).Replace('_', '.').Replace("%", ".*") +  @"'z", RegexOptions.Singleline).IsMatch(toSearch);
  }
}
examples:
bool willBeTrue = "abcdefg".Like("abcd_fg");
bool willAlsoBeTrue = "abcdefg".Like("ab%f%");
bool willBeFalse = "abcdefghi".Like("abcd_fg");

解决方案2:

madate.ToString().Contain("myvalue")
madate.ToString().StartWith("myvalue")
madate.ToString().EndWith("myvalue")

或者使用sql:其中CONVERT(VARCHAR(24),yourdate,103)类似于"%yourvalue%"

   where CONVERT(VARCHAR(24),yourdate, 103) like '%yourvalue%'