string - 基于相似性比较字符串?

标签 string algorithm fuzzy-search

我有一组格式正确的电话号码:

string[] phoneNumbers = {"US +1 866 XXX XXXX",
                         "UK +44 (0)XXX XXX XXXX",
                         "Singapore +65 XXXX XXXX"
                        };

我作为输入获得的电话号码对应于列表中的这些项目之一,但其格式略有不同。输入可以是这 3 个中的一个。注意,开头的国家/地区名称不包括在内。

  • (866) XXX-XXXX
  • +44 (0) XXX XXXXXX
  • +65 XXXXXXXX

如您所见,我的输入格式与数组略有不同。

我的问题是,当我有一个格式不同的输入时,从数组中提取正确格式版本的数字的好方法是什么。

我不是要求别人为我做这件事,因为我可以很好地完成代码。出于某种原因,这个逻辑现在让我着迷。

我想做的是一个并行电话号码数组,其中包含所有格式不正确的输入,并获取该数组中项目的索引,并获取正确数组的相应输入。这看起来合乎逻辑吗?有没有更好、更快的方法?


编辑:

目前我正在完成这项工作:

                for(int i=0; i<phoneNumbers.Count(); i++)
                {
                    var tempDialInNumber = (from t in input //input from the user
                                            where char.IsDigit(t)
                                            select t).ToArray();
                    string tDialInNumber = new string(tempDialInNumber);

                    var tempDigitPhoneNumber = (from t in phoneNumbers.GetValue(i).ToString()
                                            where char.IsDigit(t)
                                            select t).ToArray();

                    string tDigitPhoneNumber = new string(tempDigitPhoneNumber);

                    if (tDigitPhoneNumber.Contains(tDialInNumber))
                    {
                        dialInNumber = phoneNumbers.GetValue(i).ToString(); 
                    }

                }

最佳答案

规范的做法是:

  1. 将您的数据转换为规范形式。
  2. 对规范形式进行愚蠢的比较。

关于string - 基于相似性比较字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22820607/

相关文章:

R:带有矢量模式的 agrep

python - 值错误 : invalid literal for int() with base 16: '\x0e\xa3' Python

c++ - C++中无向图算法找环的实现

java - 唯一编号生成算法

javascript - 在 JavaScript 中实现调车场算法

elasticsearch - 模糊匹配失败,但精确匹配通过

javascript - fusionJS 模糊搜索对我不起作用

c# - 如何改变 C# 中数字的文化?

string - bash:按当前出现次数/运行次数更改列字段

java - 如何将字符串输入数组直到输入字符串匹配条件?