我写了一个简短的代码来检查两个加扰字符串的等效性。 但是代码无法按预期运行。
下面给出了代码。
string firstString, secondString;
Console.Write("Enter the First String: ");
firstString = Console.ReadLine();
Console.Write("Enter the 2nd String: ");
secondString = Console.ReadLine();
char[] firstArray = firstString.ToArray();
char[] secondArray = secondString.ToArray();
Array.Sort(firstArray);
Array.Sort(secondArray);
firstString = firstArray.ToString();
secondString = secondArray.ToString();
if(firstString == secondString)
{
Console.Write("Matched");
}
else
Console.Write("Not Matched");
Console.ReadKey();
}
}
答案 0 :(得分:2)
firstArray.ToString();
将以字符串格式返回数组的类型。如果您进行调试,则会看到firstString
的值为
System.Char []
而不是数组的内容。
因此,您的字符串比较将始终返回true
。
要获得结果,如果可以使用LINQ
,则可以这样使用SequenceEqual
:
Console.Write("Enter the First String: ");
var firstString = Console.ReadLine();
Console.Write("Enter the 2nd String: ");
var secondString = Console.ReadLine();
var list1 = firstString.ToList();
var list2 = secondString.ToList();
list1.Sort();
list2.Sort();
if (list1.SequenceEqual(list2))
Console.Write("Matched");
else
Console.Write("Not Matched");