如何比较两个char[]数组是否相等

本文关键字:数组 是否 char 何比较 比较 两个 | 更新日期: 2023-09-27 18:13:03

现在,我有两个char数组,foo1[]foo2[]。当我将它们转换为字符串并输出到控制台时,它们都显示为bar。我知道我可以这样做:

int g;
for (int i=0;i<length.foo1;i++) {      // loop from 0 to length of array
    if (foo1[i]=foo2[i]) {             // if foo1[0] and foo2[0] are the same char
    g++;                               // increment a counter by 1
}
else                                   // otherwise...
{
    i=100;                             // set i to something that will halt the loop
}
if (g = length.foo1) {                 // if the incremented counter = length of array
    return true;                       // arrays are equal, since g only increments
}                                      // in the case of a match, g can ONLY equal the
else {                                 // array length if ALL chars match
    return false;                      // and if not true, false.

来逐个字母比较它们,但我猜有更简单的方法。有趣的是,大多数谷歌我做的comparing char[] for eqivalency c#和类似的关键字结果在整个混乱的信息关于比较字符串数组,或比较字符串或字符数组时,部分数组匹配的东西或另一个…我还没有找到任何简单的方法来测试字符数组是否相等。逐级遍历每个数组是最好的方法吗?或者是否有办法比较如果foo1=foo2或foo1==foo2?这两种方法都不适合我。

基本上,我需要测试char foo1[]char foo2[]是否都是{B,A,R}

如何比较两个char[]数组是否相等

您可能正在寻找:

foo2.SequenceEqual(foo1)

我认为您可以使用SequenceEquals来比较数组,即使首先检查两个长度具有更好的性能。

foo1.ToList().Intersect(foo2.ToList())

你可以创建一个你自己的函数,这将比首先将char[]转换为字符串然后比较两个字符串更快。1. 首先比较数组的长度,如果它们不相等,则返回false。2. 开始循环并比较每个字符,如果发现有差异则返回false,否则循环后返回true。

if(foo1.Length != foo2.Length){ return false;}
for(int i=0;i<foo1.Length;i++){
   if(foo1[i] != foo2[i]){ return false;}
}
return true;
string s = new string(foo1);
string t = new string(foo2);
int c = string.Compare(s, t);
if(c==0){
    //its equal
}