Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将用户输入与从csv文件读取的字符串进行比较,并根据相似字符的数量确定输出字符串_C# - Fatal编程技术网

C# 将用户输入与从csv文件读取的字符串进行比较,并根据相似字符的数量确定输出字符串

C# 将用户输入与从csv文件读取的字符串进行比较,并根据相似字符的数量确定输出字符串,c#,C#,下面的代码将用户输入与csv文件中的美国城市名称进行比较。该文件以逗号分隔,只有一列带有标题。如果用户输入与文件中的行或字符串匹配,则返回文件中的字符串;如果不匹配,则返回用户输入 除了根据精确匹配返回数据外,我如何根据匹配字符数从文件或用户输入返回数据 示例: 用户输入:Brookly 文件中的字符串:Brooklyn输出:Brooklyn 在上面的示例中,只有一个字符不同。所以我可以说,如果总字符差是一,那么从文件返回字符串,否则返回用户输入 代码中的RemoveAllFormat方法只是去

下面的代码将用户输入与csv文件中的美国城市名称进行比较。该文件以逗号分隔,只有一列带有标题。如果用户输入与文件中的行或字符串匹配,则返回文件中的字符串;如果不匹配,则返回用户输入

除了根据精确匹配返回数据外,我如何根据匹配字符数从文件或用户输入返回数据

示例:

用户输入:
Brookly
文件中的字符串:
Brooklyn
输出:
Brooklyn

在上面的示例中,只有一个字符不同。所以我可以说,如果总字符差是一,那么从文件返回字符串,否则返回用户输入

代码中的
RemoveAllFormat
方法只是去除所有格式,以便比较两个字符串

代码:


你可以用这段代码计算Levenshtein距离。看起来有另一个实现,在一个更明显的许可下


然后,您可以决定“足够近”所允许的距离,并输出距离足够小的行。

您可以使用下面的代码计算Levenshtein距离。看起来有另一个实现,在一个更明显的许可下


然后,您可以决定“足够近”所允许的距离,并输出距离足够小的行。

通过这样读取CSV文件,您可以大大简化代码。字符串[]cities=File.ReadAllText(@“X:\city.csv”).Split(',');通过这样读取CSV文件,可以大大简化代码。字符串[]cities=File.ReadAllText(@“X:\city.csv”).Split(',');哇!我被这些东西迷住了,非常迷人!!现在我只需要决定如何最好地使用它。非常感谢你!哇!我被这些东西迷住了,非常迷人!!现在我只需要决定如何最好地使用它。非常感谢你!
public string MatchedCity(string input)
{
    string cityMatch = null;
    string[] cityList = null;
    const string lookupFile = @"X:\city.csv";

    using (StreamReader r = new StreamReader(lookupFile))
    {
    string refList = "";
    while ((refList = r.ReadLine()) != null)
    {
        cityList = refList.Split(',');

        foreach (string city in cityList)
        {
            if (String.Equals(RemoveAllFormat(input), RemoveAllFormat(city)))
            {
                cityMatch = city;
                break;
            }
            else
            {
                continue;
            }
        }

        if (string.IsNullOrEmpty(cityMatch) == false)
            break;
        else
            continue;
    }
    }

    if (string.IsNullOrEmpty(cityMatch) == true)
    {
        return input;
    }
    else
    {
        return cityMatch.Replace("\"", "");
    }
}