簡體   English   中英

在C#中匹配模式

[英]Matching a Pattern in C#

這似乎是一個顯而易見的事情,但我想知道C#中是否存在用於匹配字符串的通配符。 我想編寫一個程序,以便用戶可以根據數據庫中的日期值搜索某些內容。 只要輸入整個日期,我到目前為止工作,但進入半個日期會導致解析錯誤我現在正在使用此代碼

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

我想看看是否有辦法看到用戶輸入的內容(只有年份,月份或年份沒有日期,或者如果只輸入半年則不會崩潰)

涉及在SQL本身中執行此操作的解決方案並不重要

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM