欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現(xiàn)字符串模糊匹配的方法小結

 更新時間:2024年07月02日 10:01:52   作者:我寫代碼菜如坤  
在C#中實現(xiàn)字符串的模糊匹配可以借助正則表達式或者一些模糊匹配算法來實現(xiàn),文章通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下

在C#中實現(xiàn)字符串的模糊匹配可以借助正則表達式或者一些模糊匹配算法來實現(xiàn)。

方法一:使用正則表達式

如果你的模糊匹配是基于簡單的通配符(如*?),可以通過正則表達式來實現(xiàn)。

using System;
using System.Text.RegularExpressions;
 
class Program
{
    static void Main()
    {
        string pattern = "he*o"; // 例如,模糊匹配模式
        string input = "hello"; // 要匹配的字符串
 
        // 將模糊匹配模式轉換為正則表達式
        string regexPattern = "^" + Regex.Escape(pattern)
                                    .Replace("\\*", ".*")
                                    .Replace("\\?", ".") + "$";
 
        // 使用正則表達式進行匹配
        if (Regex.IsMatch(input, regexPattern))
        {
            Console.WriteLine("字符串匹配成功!");
        }
        else
        {
            Console.WriteLine("字符串匹配失敗!");
        }
    }
}

方法二:使用模糊匹配算法

如果你需要更復雜的模糊匹配(例如模糊搜索、近似匹配等),可以使用字符串相似度算法,如Levenshtein距離或者Jaccard相似度等。這些算法可以衡量兩個字符串之間的相似程度,然后根據閾值判斷是否匹配。

以下是一個使用Levenshtein距離算法進行模糊匹配的示例:

using System;
 
class Program
{
    static void Main()
    {
        string pattern = "hello"; // 模糊匹配模式
        string input = "heLlo"; // 要匹配的字符串
 
        int threshold = 2; // 可接受的最大編輯距離
 
        // 計算輸入字符串與模式字符串的編輯距離
        int distance = ComputeLevenshteinDistance(input.ToLower(), pattern.ToLower());
 
        // 如果編輯距離在閾值范圍內,則認為匹配成功
        if (distance <= threshold)
        {
            Console.WriteLine("字符串匹配成功!");
        }
        else
        {
            Console.WriteLine("字符串匹配失??!");
        }
    }
 
    // 計算Levenshtein距離的方法
    static int ComputeLevenshteinDistance(string s, string t)
    {
        int n = s.Length;
        int m = t.Length;
        int[,] d = new int[n + 1, m + 1];
 
        // 初始化邊界條件
        for (int i = 0; i <= n; i++)
        {
            d[i, 0] = i;
        }
        for (int j = 0; j <= m; j++)
        {
            d[0, j] = j;
        }
 
        // 計算編輯距離
        for (int j = 1; j <= m; j++)
        {
            for (int i = 1; i <= n; i++)
            {
                if (s[i - 1] == t[j - 1])
                {
                    d[i, j] = d[i - 1, j - 1];
                }
                else
                {
                    d[i, j] = Math.Min(d[i - 1, j] + 1, // 刪除
                                      Math.Min(d[i, j - 1] + 1, // 插入
                                               d[i - 1, j - 1] + 1)); // 替換
                }
            }
        }
 
        return d[n, m];
    }
}

以上代碼示例中,ComputeLevenshteinDistance方法計算了兩個字符串之間的Levenshtein距離,然后通過比較距離與設定的閾值來判斷是否匹配。

根據你的具體需求,選擇適合的方法來實現(xiàn)字符串的模糊匹配。

拓展:C#  list 中字段的模糊查找匹配實現(xiàn)

在游戲中,關于在列表中 查找某行數(shù)據時,需要通過關鍵字匹配,去遍歷表中的數(shù)據,如果表中匹配到關鍵字,則返回該行數(shù)據,沒有則返回null。比如查找在好友列表查找某個好友時。

建立一個 data 數(shù)據:用于保存item 的所有信息 (如: id,title,content,icon 等)

public class Data{

  public int id;
  public string name;
  public string title;
  public string content;
  public string icon;
  ...
}

實現(xiàn):

private List<Data> onFindKeyWord(string str, List<Data> list){

List<Data> m_list= new List<Data>();
int count = list.Count;
 for(int i=0; i<count; i++){
  Data data = list[i];
  if(data.name.Indexof(str) != -1)
  {
    m_list.Add(data);
  }

 }
 return m_list; // 返回新的列表,符合模糊查詢的結果列表
}

用foreach 遍歷, 通過name模糊查找

private List<Data> onFindKeyWord(string str, List<Data> list){

List<Data> m_list= new List<Data>();
foreach(Data data in list)
{
  if(data.name.Indexof(str) != -1){
    m_list.Add(data);
  }

}
return m_list;

}

使用 list.Find(); 通過name 精確查找,不存在返回null

private List<Data> onFindKeyWord(string str, List<Data> list){

List<Data> m_list= new List<Data>();
Data data = list.Find(m_data=> m_data == str);
// 需要判斷是否存在
if(data != null){
  m_list.Add(data);
}
return m_list;
}

到此這篇關于C#實現(xiàn)字符串模糊匹配的方法小結的文章就介紹到這了,更多相關C#字符串模糊匹配內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c# Invoke和BeginInvoke 區(qū)別分析

    c# Invoke和BeginInvoke 區(qū)別分析

    這篇文章主要介紹了c# Invoke和BeginInvoke 區(qū)別分析,需要的朋友可以參考下
    2014-10-10
  • C# 使用WPF 用MediaElement控件實現(xiàn)視頻循環(huán)播放

    C# 使用WPF 用MediaElement控件實現(xiàn)視頻循環(huán)播放

    在WPF里用MediaElement控件,實現(xiàn)一個循環(huán)播放單一視頻的程序,同時可以控制視頻的播放、暫停、停止。這篇文章給大家介紹了C# 使用WPF 用MediaElement控件實現(xiàn)視頻循環(huán)播放,需要的朋友參考下吧
    2018-04-04
  • 深入了解c#多線程編程

    深入了解c#多線程編程

    這篇文章主要介紹了c#多線程編程的相關資料,文中講解非常細致,幫助大家更好的理解和學習c# 多線程,感興趣的朋友可以了解下
    2020-08-08
  • c#?chart縮放,局部放大問題

    c#?chart縮放,局部放大問題

    這篇文章主要介紹了c#?chart縮放,局部放大問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • c#刪除代碼中的單行注釋行示例

    c#刪除代碼中的單行注釋行示例

    本文提供了c#刪除代碼中的單行注釋行的示例,還可以看到文件流的使用方法,大家參考使用吧
    2014-01-01
  • C# 設計模式系列教程-模板方法模式

    C# 設計模式系列教程-模板方法模式

    模板方法模式通過把不變的行為搬移到超類,去除了子類中的重復代碼,子類實現(xiàn)算法的某些細節(jié),有助于算法的擴展。
    2016-06-06
  • C#迷你猜數(shù)實例分析

    C#迷你猜數(shù)實例分析

    這篇文章主要介紹了C#迷你猜數(shù),實例分析C#操作數(shù)字及數(shù)組的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • C#實現(xiàn)帶引導窗體的窗體設計操作流程

    C#實現(xiàn)帶引導窗體的窗體設計操作流程

    很多時候,我們的窗體設計需要一個引導窗體,當打開一個項目的窗體時,默認的是先打開一個歡迎或介紹項目信息的引導窗體,幾秒鐘后再打開項目的主窗體,本文給大家介紹了C#實現(xiàn)帶引導窗體的窗體設計操作流程,感興趣的朋友可以參考下
    2024-04-04
  • CefSharp如何進行頁面的縮放(Ctrl+滾輪)

    CefSharp如何進行頁面的縮放(Ctrl+滾輪)

    CefSharp簡單來說就是一款.Net編寫的瀏覽器包,本文主要介紹了CefSharp如何進行頁面的縮放,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯誤(0x80005000)

    DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯誤(0x80005000)

    這篇文章主要介紹了DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯誤(0x80005000)的解決辦法
    2015-09-09

最新評論