在C#中匹配模式

时间:2016-07-16 10:53:30

标签: c# sql

这看似显而易见,但我想知道C#中是否存在用于匹配字符串的通配符。 我想编写一个程序,以便用户可以根据数据库中的日期值搜索某些内容。到目前为止,只要输入整个日期,我就可以使用,但输入半个日期会导致解析错误 我现在正在使用此代码

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

我想知道是否有办法查看用户输入的内容(只有年份,月份和年份没有日期,或者如果只输入半年就不会崩溃)

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

2 个答案:

答案 0 :(得分:0)

解决方案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%'

答案 1 :(得分:0)

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