2016-02-25 43 views
1

我正在編寫一個程序,並且我正在使用LINQ搜索到SQL Server數據庫(儘管這可能會在某些時候發生變化)。我想爲特定的音調符號製作過濾器,例如搜索波形符號ẽ但不是旋律ê。我見過如何忽略所有的例子,但沒有人說如何忽略特定的例子。我只需要通過迭代字符串並更改它們來手動轉換搜索的所有字符串?C#搜索過濾器 - 忽略特定的變音符號

+1

調用它,我將創建一個字典/查找將被過濾的變音符號,並將字符串的每個字符與字典/查找進行比較。 –

+0

我該怎麼做? – mmf1102

+0

沒關係我誤讀你的評論 – mmf1102

回答

1

如果您的數據庫整理允許它,您必須編寫一個方法來忽略特定字符。

如果你想不理你都diacrits定義自己的方法,如:

public static string RemoveDiacritics(this String s) 
{ 
    String normalizedString = s.Normalize(NormalizationForm.FormD); 
    StringBuilder stringBuilder = new StringBuilder(); 

    for (int i = 0; i < normalizedString.Length; i++) 
    { 
     Char c = normalizedString[i]; 
     if (System.Globalization.CharUnicodeInfo.GetUnicodeCategory(c) != System.Globalization.UnicodeCategory.NonSpacingMark) 
      stringBuilder.Append(c); 
    } 

    return stringBuilder.ToString(); 
} 

編輯:

public static class StringExtensions 
{ 
    public static bool CaseContains(this string baseStr, string textToSearch, StringComparison compareMode) 
    { 
     return (baseStr.IndexOf(textToSearch, compareMode) != -1); 
    } 
} 

if(text.CaseContains(whattextisearch, StringComparison.CurrentCulture)) 
..... 
+0

謝謝,這應該工作 – mmf1102