我有两个阵列,如下:如何比较字符串和布尔数组?
_user string[3] containing "true" "true" and "true"
_test bool[3] containing true true false
在数组中的元素的数量将变化从一个运行到另一个。我的问题是如何比较这两个数组中的值,并在元素匹配时返回true。
希望有人能帮助,因为我的C#不是很好。
珍妮特
我有两个阵列,如下:如何比较字符串和布尔数组?
_user string[3] containing "true" "true" and "true"
_test bool[3] containing true true false
在数组中的元素的数量将变化从一个运行到另一个。我的问题是如何比较这两个数组中的值,并在元素匹配时返回true。
希望有人能帮助,因为我的C#不是很好。
珍妮特
使用bool.Parse
转换的字符串为bool,并SequenceEqual
的序列比较:
if (_user.Select(bool.Parse).SequenceEqual(_test))
{
...
}
谢谢。你的解决方案工作得很好。珍妮特 – 2011-04-22 14:49:08
不是LINQiest但当务之急的解决方法是在这种情况下很清楚:
bool TestItems() {
for (int i = 0; i < Math.Min(_user.Length, _test.Length); i++) {
if (_test[i] != (_user[i] == "true")) {
return false;
}
}
return true;
}
应该注意的是,在没有任何澄清的问题中,假设两者长度相同并且阵列长度不均匀忽略小数组的边界外的元素。
两个阵列长度相同。感谢您的输入。珍妮特 – 2011-04-22 14:42:45
bool equal=true;
for(int i=0;i<3;i++)
{
if (!(_user[i].equals(Convert.ToString(_test[i]))))
{
equal=false;
break;
}
}
或
equal=true;
for(int i=0;i<3;i++)
{
if !(_test[i]==Convert.ToBoolean(_user[i])))
{
equal=false;
break;
}
}
bool [] array1 = {true,false, true};
bool[] array2 = { true, true, true };
bool result = false;
for (int index = 0; index < array1.Length && index < array2.Length; index++)
{
result = CheckTrueOrNot(array1[index],array2[index]);
Console.WriteLine(result.ToString());
}
private bool CheckTrueOrNot(bool value1, bool value2)
{
bool comparisonVal = false;
if (value1.CompareTo(value2) == 0)
{
comparisonVal = true;
}
return comparisonVal;
}
珍妮特,发布由托马斯Levesque的解决办法是“真空”最好的一个,但有很多事情对那里发生在幕后,这可能不是对于刚入门的初学者来说,完全清楚。 Ron Warholic的解决方案可能会更容易理解,因为您可以一步一步跟踪它,并且看它如何在较低的水平上运行。 – scrwtp 2011-04-22 15:30:37