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