我正在尝试为我的程序中的搜索功能提供建议功能,例如,我在搜索部分输入 janw doe,它会输出不匹配 - 您是说 jane doe 吗?我不确定问题是什么,也许与字符/字符串比较有关。我尝试将两个变量作为 char 类型进行比较,例如 char temp -->temp.Contains ...等,但出现错误(char不包含 Contains 的定义)。希望对此有任何帮助! 8)
if (found == false)
{
Console.WriteLine("\n\nMATCH NOT FOUND");
int charMatch = 0, charCount = 0;
string[] checkArray = new string[26];
//construction site /////////////////////////////////////////////////////////////////////////////////////////////////////////////
for (int controlLoop = 0; controlLoop < contPeople.Length; controlLoop++)
{
foreach (char i in userContChange)
{
charCount = charCount + 1;
}
for (int i = 0; i < userContChange.Length; )
{
string temp = contPeople[controlLoop].name;
string check=Convert.ToString(userContChange[i]);
if (temp.Contains(check))
{
charMatch = charMatch + 1;
}
}
int half = charCount / 2;
if (charMatch >= half)
{
checkArray[controlLoop] = contPeople[controlLoop].name;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
Console.WriteLine("Did you mean: ");
for (int a = 0; a < checkArray.Length; a++)
{
Console.WriteLine(checkArray[a]);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
最佳答案
一个字符串由许多字符组成。字符是原始的,同样,它不“包含”任何其他项目。字符串基本上是一个字符数组。
用于比较字符串和字符:
char a = 'A';
String alan = "Alan";
Debug.Assert(alan[0] == a);
或者如果你有一个数字字符串..我想
char a = 'A';
String alan = "A";
Debug.Assert(alan == a.ToString());
所有这些断言都是真的
但是,我想对您的问题发表评论的主要原因是建议一种替代方法来建议“您是说吗?”。有一种称为 Levenshtein Distance 的算法,它计算将一个字符串转换为另一个字符串所需的“单个字符编辑次数”。它可以用来衡量两个字符串有多接近。您可能想了解一下该算法的工作原理,因为它可能对您有所帮助。
这是我发现的一个小程序,它演示了:Approximate String Matching with k-differences
还有维基百科链接 Levenshtein distance
关于c# - 字符/字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906297/