gpt4 book ai didi

.net - DataGridView 过滤器忽略单元格、单词上的变音符号(重音)

转载 作者:行者123 更新时间:2023-12-01 23:22:28 29 4
gpt4 key购买 nike

我使用 TextBoxDataGridView 中进行过滤 image .这是完美的工作。表格的单元格包含 1250 个拉丁字符。我想搜索忽略单元格中单词的重音。例子。如果是文本框 "knjazevacka",搜索结果包含 "knjaževačka"抱歉英语不好。这是导入表的代码:

Dim blah As New System.Net.WebClient
blah.Encoding = System.Text.Encoding.UTF8
Dim str As String = blah.DownloadString(urlfiberlTextBox.Text)
Dim Results As DataSet = ConvertHTMLTablesToDataSet(str)
For Each Data As DataTable In Results.Tables
FiberList.DataSource = Data
Next

这是为了搜索:

Dim bs As New BindingSource()
bs.DataSource = FiberList.DataSource
bs.Filter = String.Format("[Column1] LIKE '*{0}*' OR [Column1] LIKE '*{0}*' OR [Column3] LIKE '*{0}*'", FiberSearchTextBox.Text)
FiberList.DataSource = bs

最佳答案

选项 1

还从数据库中选择未重音数据并在过滤器中使用

如果您可以更改选择数据的查询,作为一个选项,当从 SQL Server 中选择数据时,您也可以选择未重音的列值,然后根据它们过滤数据。

例如,设置更改您的查询以包含无重音值:

SELECT Column1, Column1 COLLATE SQL_Latin1_General_CP1253_CI_AI AS Column1_UnAccented 
FROM Table1

然后,使用无重音列值执行过滤:

bindingSource1.Filter = String.Format("Column1_UnAccented LIKE '*{0}*'", textBox1.Text)

选项 2

使用 C# 使数据不重音并将它们放在新的列中并在过滤器中使用

如果您不能更改选择查询,您可以向数据表添加一个新列并使用以下方法将未重音的数据放入其中 Blair Conrad共享,然后根据新列进行过滤:

Public Function RemoveDiacritics(text) As String
Dim normalizedString = text.Normalize(System.Text.NormalizationForm.FormD)
Dim stringBuilder = New System.Text.StringBuilder()
For Each c In normalizedString
Dim unicodeCategory = Globalization.CharUnicodeInfo.GetUnicodeCategory(c)
If (unicodeCategory <> Globalization.UnicodeCategory.NonSpacingMark) Then
stringBuilder.Append(c)
End If
Next
Return stringBuilder.ToString().Normalize(System.Text.NormalizationForm.FormC)
End Function

关于.net - DataGridView 过滤器忽略单元格、单词上的变音符号(重音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34340371/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com