2011-04-22 74 views
1

我有两个阵列,如下:如何比较字符串和布尔数组?

_user string[3] containing "true" "true" and "true" 
_test bool[3] containing true true false 

在数组中的元素的数量将变化从一个运行到另一个。我的问题是如何比较这两个数组中的值,并在元素匹配时返回true。

希望有人能帮助,因为我的C#不是很好。

珍妮特

+0

珍妮特,发布由托马斯Levesque的解决办法是“真空”最好的一个,但有很多事情对那里发生在幕后,这可能不是对于刚入门的初学者来说,完全清楚。 Ron Warholic的解决方案可能会更容易理解,因为您可以一步一步跟踪它,并且看它如何在较低的水平上运行。 – scrwtp 2011-04-22 15:30:37

回答

13

使用bool.Parse转换的字符串为bool,并SequenceEqual的序列比较:

if (_user.Select(bool.Parse).SequenceEqual(_test)) 
{ 
    ... 
} 
+0

谢谢。你的解决方案工作得很好。珍妮特 – 2011-04-22 14:49:08

0

不是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; 
} 

应该注意的是,在没有任何澄清的问题中,假设两者长度相同并且阵列长度不均匀忽略小数组的边界外的元素。

+0

两个阵列长度相同。感谢您的输入。珍妮特 – 2011-04-22 14:42:45

1
 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; 
        } 

     } 
0
  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; 
     }