【问题标题】:special characters in Autocomplete c#自动完成c#中的特殊字符
【发布时间】:2011-01-24 21:05:03
【问题描述】:

我在 SQL Server 中使用 c# 和数据库。 我有一个自动完成字段,可以很好地处理普通字符。我也想添加自动完成特殊字符的功能,如ö,Ä,é,è,... 我还想添加识别在某些语言中可能听起来相似的字符的可能性,例如“b”和“v”,所以如果我输入“boor”,会发现“voor”是一个可能的建议。

有什么想法吗?

谢谢

编辑:自动完成文本框用于姓名和姓氏(每个一个)。它们是用 AutoCompleteStringCollection 制作的。他们在数据库中搜索已经存在的姓名或姓氏。 应用程序的这一部分基本上为用户提供了在应用程序中添加新人的可能性(姓名、姓氏等)。 目标是当用户在应用程序中创建一个新人时,他/她将获得一个列表,其中包含与他/她正在输入的人具有相似姓名或姓氏的人。 因此,如果我们在数据库中已经有了 'James Smith',当用户输入 Smyth 时,他/她应该可以更改为 Smith(也许是自动完成),说“嘿,你是说 'Smith' 吗? "所以我们避免了用户用错误的名字创建同一个人。

因为我们正在处理来自世界各地的人的姓名和姓氏,所以创建新人时的错误可能来自任何语言。

警察局:

  1. 创建自己的自动完成功能是个好主意吗?在文本框正下方隐藏/显示列表框

  2. 对于我正在尝试的内容,SOUNDEX 函数对 ö、Ä、é、è 等字符非常有效……但我不能为每个名字或姓氏调用数据库。所以不知道怎么用。

【问题讨论】:

    标签: c# sql-server autocomplete


    【解决方案1】:

    我不确定自动完成是什么意思。关于问题的第二部分,您可能需要 SQL Server 功能SOUNDEX。它返回四字符 (SOUNDEX) 代码来评估两个字符串的相似性。

    像这样使用它:

    SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');
    

    以上单词拼写几乎相同,因此它们具有相同的 soundex'es S530S530。 我认为 soundex 可以用于各种语言,虽然我不完全确定。

    【讨论】:

    • 'boor'、'voor':B600 和 V600
    • soundex('SHmith') = S530,与 'smith' 相同,但听起来确实不同。我猜 soundex() 是专为英语使用而设计的。
    • @Dercsar 恐怕您可能是对的,OP 没有指定他使用的语言(是荷兰语吗?)。需要进一步搜索才能确定是否存在针对他的语言的解决方案。
    【解决方案2】:

    不幸的是,您只能将AutoCompletionSource 用作AutoCompleteStringCollection

    但逻辑,将呈现给用户的内容(文本框本身下方带有匹配项的框)完全由 TextBox 控制,不会受到任何影响。

    所以即使你使用 SoundEx() 或 Levenstein Distance 之类的东西,你也不能告诉它 TextBox,因为它总是在给定的集合上创建一个 String.StartsWith() 并且在选择时它会替换整个内容从源中选择值。

    这已经让我发疯了。您根本无法真正影响将列表中的哪些项目呈现给用户,并且您无法影响选择框中的某些项目时会发生什么。

    【讨论】:

      【解决方案3】:

      我会研究 Levenshtein 距离。

      Soundex 相当原始。它最初是为手工计算而开发的。它产生一个键,适用于西方名字和姓氏。

      Levenshtein distance 查看两个字符串值并根据它们的相似性生成一个值。它正在寻找丢失或替换的字母(没有像 SoundEx 那样的语音比较)。

      维基百科参考:http://en.wikipedia.org/wiki/Levenstein_distance

      使用 Levenshtein 距离测试两个字符串值的网站:http://gtools.org/levenshtein-calculate.php

      【讨论】:

        猜你喜欢
        • 2017-02-08
        • 2018-12-21
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 2014-08-23
        • 1970-01-01
        • 2020-02-11
        • 2015-02-01
        相关资源
        最近更新 更多