C# 如何比较两个字符数组并显示不同的字符?
我想比较两个字符数组,如果它们不相等,我想在输出上显示不同的字符。例如,在我下面的代码中,不同的字符是“y”。所以在输出上,我想写:“不同的字符是y,它在数组ay中,但不在ar中”。我正在使用C#,这是我编写的代码,我在使用CompareTo方法时遇到了一个错误。有人能帮我吗?提前谢谢。 注意,我还是个初学者C# 如何比较两个字符数组并显示不同的字符?,c#,arrays,compare,C#,Arrays,Compare,我想比较两个字符数组,如果它们不相等,我想在输出上显示不同的字符。例如,在我下面的代码中,不同的字符是“y”。所以在输出上,我想写:“不同的字符是y,它在数组ay中,但不在ar中”。我正在使用C#,这是我编写的代码,我在使用CompareTo方法时遇到了一个错误。有人能帮我吗?提前谢谢。 注意,我还是个初学者 char[] ar = { 'a', 'h', 'm', 'a', 'd' }; char[] ay = { 'a', 'y', 'm', 'a', 'd' };
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
if (ar.SequenceEqual(ay))
{
Console.WriteLine("Success");
}
else
{
Console.WriteLine("failure");
char diff = ar.CompareTo((Object)ay));
Console.Write(diff);
}
看看这个,
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
List<char> matches = new List<char>();
if (ar.SequenceEqual(ay))
{
Console.WriteLine("Success");
}
else
{
for (int i = 0; i < ar.Count(); i++)
{
if (ar[i] != ay[i])
{
matches.Add(ay[i]);
}
}
foreach (var matched in matches)
{
Console.WriteLine("Failure: " + matched);
}
}
char[]ar={'a','h','m','a','d'};
char[]ay={a',y',m',a',d'};
列表匹配项=新列表();
如果(ar.equenceequal(ay))
{
Console.WriteLine(“成功”);
}
其他的
{
对于(int i=0;i
看看这个
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
List<char> matches = new List<char>();
if (ar.SequenceEqual(ay))
{
Console.WriteLine("Success");
}
else
{
for (int i = 0; i < ar.Count(); i++)
{
if (ar[i] != ay[i])
{
matches.Add(ay[i]);
}
}
foreach (var matched in matches)
{
Console.WriteLine("Failure: " + matched);
}
}
char[]ar={'a','h','m','a','d'};
char[]ay={a',y',m',a',d'};
列表匹配项=新列表();
如果(ar.equenceequal(ay))
{
Console.WriteLine(“成功”);
}
其他的
{
对于(int i=0;i
试试这个选项,我还在数组中添加了一个额外的字符,只是为了进行故障检查:
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'f', 'm', 'a', 'd' };
Console.WriteLine(GetDiffOfCharArray(ay, ar, "ay", "ar"));
ay = new char[] { 'a', 'h', 'm', 'a', 'd' };
Console.WriteLine(GetDiffOfCharArray(ay, ar, "ay", "ar"));
Console.ReadLine();
}
private static string GetDiffOfCharArray(char[] array1Values, char[] array2Values, string array1Name, string array2Name)
{
string result = "";
if (array1Values.SequenceEqual(array2Values))
{
result = string.Format("Success, Array '{0}' matches Array '{1}'", array1Name, array2Name);
}
else
{
var diff = array1Values.Except(array2Values);
result = string.Format("Failure, the different char is '{0}', it is in the array '{1}' but not in the array '{2}'",
string.Join("','", diff),
array1Name,
array1Name);
}
return result;
}
}
}
其中,失败和成功的输出如下:
失败,不同的字符是“y”和“f”,它在数组“ay”中,但不在数组“ay”中
成功,数组“ay”与数组“ar”匹配
尝试此选项,我还在数组中添加了一个额外的字符,只是为了进行故障检查:
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'f', 'm', 'a', 'd' };
Console.WriteLine(GetDiffOfCharArray(ay, ar, "ay", "ar"));
ay = new char[] { 'a', 'h', 'm', 'a', 'd' };
Console.WriteLine(GetDiffOfCharArray(ay, ar, "ay", "ar"));
Console.ReadLine();
}
private static string GetDiffOfCharArray(char[] array1Values, char[] array2Values, string array1Name, string array2Name)
{
string result = "";
if (array1Values.SequenceEqual(array2Values))
{
result = string.Format("Success, Array '{0}' matches Array '{1}'", array1Name, array2Name);
}
else
{
var diff = array1Values.Except(array2Values);
result = string.Format("Failure, the different char is '{0}', it is in the array '{1}' but not in the array '{2}'",
string.Join("','", diff),
array1Name,
array1Name);
}
return result;
}
}
}
其中,失败和成功的输出如下:
失败,不同的字符是“y”和“f”,它在数组“ay”中,但不在数组“ay”中
成功,数组“ay”与数组“ar”匹配
使用Except方法可以实现这一点,而且非常简单,不必对数组进行两次比较
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
var different = ar.Except(ay).ToList();
if (different.Count == 0)
{
Console.WriteLine("Success");
}
else
{
foreach (char c in different)
{
Console.WriteLine(c);
}
}
Console.WriteLine("Percent of similarity: "+(100-different.Count*100/ar.Length) +"%");
使用Except方法可以实现这一点,而且非常简单,不必对数组进行两次比较
char[] ar = { 'a', 'h', 'm', 'a', 'd' };
char[] ay = { 'a', 'y', 'm', 'a', 'd' };
var different = ar.Except(ay).ToList();
if (different.Count == 0)
{
Console.WriteLine("Success");
}
else
{
foreach (char c in different)
{
Console.WriteLine(c);
}
}
Console.WriteLine("Percent of similarity: "+(100-different.Count*100/ar.Length) +"%");
艾曼,除了我能为你耍把戏。这是代码
IEnumerable<char> inArArray = ar.Except(ay);
foreach (char c in inArArray) {
Console.WriteLine("{0} Exists in ar but not in ay",c);
}
IEnumerable<char> inAyrray = ay.Except(ar);
foreach (char c in inAyrray)
{
Console.WriteLine("{0} Exists in ay but not in ar", c);
}
IEnumerable数组=ar.Except(ay);
foreach(数组中的字符c){
WriteLine(“{0}存在于ar中,但不存在于ay”,c);
}
IEnumerable InAyray=ay.除(ar)外;
foreach(InAyray中的字符c)
{
WriteLine(“{0}存在于ay中,但不存在于ar中”,c);
}
Ayman,除了能为你们做的把戏。这是代码
IEnumerable<char> inArArray = ar.Except(ay);
foreach (char c in inArArray) {
Console.WriteLine("{0} Exists in ar but not in ay",c);
}
IEnumerable<char> inAyrray = ay.Except(ar);
foreach (char c in inAyrray)
{
Console.WriteLine("{0} Exists in ay but not in ar", c);
}
IEnumerable数组=ar.Except(ay);
foreach(数组中的字符c){
WriteLine(“{0}存在于ar中,但不存在于ay”,c);
}
IEnumerable InAyray=ay.除(ar)外;
foreach(InAyray中的字符c)
{
WriteLine(“{0}存在于ay中,但不存在于ar中”,c);
}
您遇到了什么错误?我不确定您的要求是什么,但您可以使用一些for或for each循环来实现这一点。对于每个差异,将不同的字符存储在单独的数组中。循环完成后,通过包含差异的数组进行循环并输出结果,您可以像下面这样测试是否相等:if(string.Join(“,ar)=string.Join(“,ay)),要获得所有差异,您需要使用左外连接,它提供第二个列表中不在第一个列表中的项。请参阅:Sami,这里是:“char[]”不包含“CompareTo”的定义,并且找不到接受“char[]”类型的第一个参数的扩展方法“CompareTo”(是否缺少using指令或程序集引用?)您得到了什么错误?我不确定您的要求是什么,但您可以使用一些for或for-each循环来实现这一点。对于每个差异,将不同的字符存储在单独的数组中。循环完成后,通过包含差异的数组进行循环并输出结果,您可以像下面这样测试是否相等:if(string.Join(“,ar)=string.Join(“,ay)),要获得所有差异,您需要使用左外连接,它提供第二个列表中不在第一个列表中的项。请参阅:Sami,这里是:“char[]”不包含“CompareTo”的定义,并且找不到接受“char[]”类型的第一个参数的扩展方法“CompareTo”(是否缺少using指令或程序集引用?),这非常有效。谢谢我只想在输出上显示这两个数组之间的相似性百分比。例如,如果有2个字符不同,而数组包含5个字符,我想从程序中计算这些数组之间的相似性百分比。这非常有效。谢谢我只想在输出上显示这两个数组之间的相似性百分比。例如,如果有2个字符不同,数组包含5个字符,我想从程序中计算这些数组之间的相似性百分比。非常好。但是它同时出现在输出失败和成功消息上。这是因为我正在运行一个失败的示例和一个成功的示例。但是它同时出现在输出失败和成功消息上。这是因为我正在运行一个失败的示例和一个成功的示例谢谢!但是在第四行,“different.Count==0”不起作用。太好了!是的,它现在确实起作用了。我想添加这两个数组之间的相似性百分比。因此,例如,如果不同字符的总数等于2,并且数组为5个字符,那么程序将计算百分比。Di